背景:
每次前端发布或改动后,不刷新页面,切换路由可能白屏幕或切换不动。体验不好。
一般解决方案:
刷新页面,即可刷新本地路由。
根本解决方案:
通过版本号控制前端页面,提示用户刷新页面。
新建文件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();//原始其他代码
}