背景:
每次前端发布或改动后,不刷新页面,切换路由可能白屏幕或切换不动。体验不好。
一般解决方案:
刷新页面,即可刷新本地路由。
根本解决方案:
通过版本号控制前端页面,提示用户刷新页面。
新建文件versionUpdate.ts
export const isNewVersion = async () => {
const res = await fetch('/version.json?t=' + Date.now());
const { version } = await res.json();
const savedVersion = localStorage.getItem('appVersion');
// console.log('new version');
if (savedVersion && savedVersion !== version) {
ElMessageBox.confirm('发现新版本,是否立即刷新?', '系统提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
localStorage.setItem('appVersion', version);
window.location.reload();
}).catch(() => {
// 取消的逻辑(如有需要可以留空)
});
} else {
localStorage.setItem('appVersion', version);
}
};
export default {
isNewVersion
};
在permission.ts文件里面,处理路由
import versionTood from '@/utils/versionUpdate';
router.beforeEach(async (to, from, next) => {
//原始其他代码,如进度加载开始
//判断当前代码版本是否与服务器中代码版本一致,如不一致则刷新页面获取最新
versionTood.isNewVersion();
//原始其他代码
}