spa项目新上线后,登录有效期内用户,能够立刻使用新上线资源。html
每次切换路由,都要进行一次打包字符串的判断,增长代码及请求前端
一、相应目录下,新建文件:static/json/build_str.json
二、build/build.js 修改:vue
// 将当前时间戳写入json文件 let json_obj = {"build_str": new Date().getTime().toString()} fs.writeFile(path.resolve(__dirname, '../static/json/build_str.json'), JSON.stringify(json_obj), function (err) { if (err) { return console.error(err); } console.log("打包字符串写入文件:static/json/build_str.json,成功!"); realBuild() })
三、src/main.js 修改:webpack
router.beforeEach((to, from, next) => { axios.get('/static/json/build_str.json?v=' + new Date().getTime().toString()) .then(res => { let newBuildStr = res.data.build_str let oldBuildStr = localStorage.getItem('build_str') || '' if (oldBuildStr !== newBuildStr) { console.log('auto refresh') localStorage.setItem('build_str', newBuildStr) location.reload() } }) next() })