自古评论出大佬,在下初级解决方案奉上。欢迎大佬评论指正更高的解决方案。html
// 此处设置是为了方便多环境部署,直接修改便可
var baseUrl = (window.baseUrl = {
dev: 'https://www.baidu.com',
pro: 'https://www.baidu.com',
mock: 'https://www.baidu.com'
})
复制代码
在 axios 的配置文件中,vue
const getUrl = () => {
if (process.env.NODE_ENV !== 'production') {
return baseUrl.dev
} else {
// 有必要的话,继续写规则
return baseUrl.pro
}
}
export default () => {
// 公共地址
axios.defaults.baseURL = getUrl()
}
复制代码
在vue.config.js中添加内容webpack
const path = require('path')
const fs = require('fs')
const CompressionPlugin = require('compression-webpack-plugin')
const resolve = dir => {
return path.join(__dirname, dir)
}
// 写入版本号
;(() => {
// 以时间戳做为版本号~~~主要是由于傻,想不到其它方式
let v = +new Date()
process.env.VUE_APP_VERSION = v
// 此处是写入.env文件中,参考连接( https://cli.vuejs.org/zh/guide/mode-and-env.html )
fs.writeFile(resolve('.env'), `VUE_APP_VERSION=${v}`, err => {
if (err) {
return console.error(err)
}
console.log(`版本号变量写入成功,本次为${v}`)
})
// 写入到public 的文件
fs.writeFile(resolve('public/v.json'), JSON.stringify({ version: v }), err => {
if (err) {
return console.error(err)
}
console.log(`版本号写入成功,本次为${v}`)
})
})()
复制代码
接下来是重点ios
在api/api.js
中写入内容web
// 版本号获取
export const getVersion = () => {
return axios.request({ url: `${location.origin}/v.json`, method: 'get' })
}
复制代码
在router/index.js
中写入内容json
router.beforeEach((to, from, next) => {
getVersion()
.then(res => {
if (process.env.VUE_APP_VERSION.toString() !== res.data.version.toString()) {
iView.QhMessage.info({
duration: 100,
closable: true,
content: '系统版本有更新,可按【CTRL + F5】获取最新资源!'
})
}
})
.catch(err => {
console.log(err)
})
iView.LoadingBar.start()
next()
})
复制代码
OK 到此搞定,效果图axios
自古评论出大佬,在下初级解决方案奉上。欢迎大佬评论指正更高的解决方案。api