实现性能好又简单的前端项目更新通知用户

128 阅读1分钟

WebpackSSE都存在性能问题和兼容问题,并且比下面方式更复杂。

1.在后端服务中,每当项目更新后,需要定义一个新的自定义响应字段。这个字段可以是一个版本号(例如x-project-version字段)用于标识当前服务端提供的内容版本。

x-project-version = 1.0.0

2.封装好axios实例进行请求,都会自动经过拦截器进行版本对比以及相应的刷新页面提示处理。

let storedVersion;

// 响应拦截器,重点在这里进行版本对比及刷新页面提示相关逻辑
instance.interceptors.response.use(response => {
    const currentVersion = response.headers['x-project-version'];
    if (!storedVersion) {
        // 首次获取到版本号,存储起来 或者自定义最初版本号
        storedVersion = currentVersion;
    } else if (storedVersion!== currentVersion) {
        // 版本不一致时,使用Element UI的MessageBox提示用户刷新页面
        this.$confirm('检测到项目有更新,是否刷新页面以获取最新内容?', '提示', {
            confirmButtonText: '确定',
            cancelButtonText: '取消', 
            type: 'warning'
        }).then(() => {
            window.location.reload();
        }).catch(() => {
            // 用户点击取消的逻辑,这里可以根据需求添加相应处理,比如记录日志等
            console.log('取消了刷新页面操作');
        });
    }
    return response;
}, error => {
    return Promise.reject(error);
});