Vue項目部署后提示刷新版本的實現(xiàn)代碼
vue項目部署新版本后,用戶如果不刷新頁面,可能會出現(xiàn)一些異常,需要刷新后才能正常使用,所以希望每次部署新版本后,提示用戶刷新瀏覽器。
之前看vue文檔,發(fā)現(xiàn)類似的功能。

查了好些資料,網(wǎng)上說的大部分也都是通過接口調(diào)用獲取版本號與本地版本號進行對比,然而我只想用純前端的方式,那該怎么做呢,實在不行就只能查資料自己開發(fā)個 webpack 插件進行處理了。
versionWebpackPlugin 主要代碼:
/***
* title: versionWebpackPlugin.js
* Author: Gaby
* Email:
* Time: 2022-06-27 14:24
* LastEditTime: 2022-06-27 14:24
* LastEditors: Gaby
* Description:
*/
const fs = require('fs');
const path = require('path');
const config = require('../package.json');
const readFile = filePath => fs.readFileSync(filePath, 'utf8');
const resolve = (...dir) => path.resolve(__dirname, '..', ...dir);
const resolveApp = (...dir) => resolve('src', ...dir);
const pluginName = 'versionWebpackPlugin';
const versionFileName = 'version.json';
class versionWebpackPlugin {
apply(compiler) {
// 1.自動注入到 webpack.entry
compiler.options.entry.app.import = [
...compiler.options.entry.app.import,
...['./src/libs/version.js']
];
// 2.將版本號寫入到 main 文件中
compiler.hooks.beforeRun.tap(pluginName, () => {
let content = readFile(resolve('build/', 'version.js'));
let string = content.toString();
string = string.replace(
'{{currentVersion}}',
config.version + '_' + Date.now()
);
string = string.replace(
'{{VERSION_FILE_PATH}}',
'static/' + versionFileName
);
fs.writeFile(resolve('src/libs/', 'version.js'), string, () => {
// console.log('更新完成');
});
fs.writeFile(
resolve('static/', versionFileName),
'{\n' +
' "version": "' +
config.version +
'_' +
Date.now() +
'"\n' +
'}',
() => {
// console.log('更新完成');
}
);
});
}
module.exports = versionWebpackPlugin;
項目中使用的是 vue-cli5 進行創(chuàng)建的,配置文件要自行創(chuàng)建,要配置在 vue.config.js中,以下兩種引入方式均可。
const path = require('path');
// const versionPlugin = require('./build/version-webpack-plugin');
module.exports = {
// 公共路徑(必須有的) 默認/
publicPath: './',
// 輸出文件目錄 默認dist
outputDir: 'dist',
// 靜態(tài)資源存放的文件夾(相對于outputDir) 默認根目錄
assetsDir: 'static',
// 生產(chǎn)環(huán)境SourceMap關
productionSourceMap: false,
// webpack 全局變量配置
configureWebpack: {
// plugins: [new versionPlugin()]
},
chainWebpack: config => {
config
.plugin('version-webpack-plugin')
.use(require('./build/version-webpack-plugin'), [{}]);
}
};
這里先拋個大概思路,看看小伙伴們是否能自行完成,新部署項目后,右下角彈出提示有新版本更新,點擊更新。
總結(jié)
到此這篇關于Vue項目部署后提示刷新版本的文章就介紹到這了,更多相關Vue提示刷新版本內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
vue parseHTML函數(shù)源碼解析 AST預備知識
這篇文章主要為大家介紹了vue parseHTML函數(shù)源碼解析 AST預備知識示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-07-07
幾個你不知道的技巧助你寫出更優(yōu)雅的vue.js代碼
本文參考自油管上某個國外大神的公開演講視頻,學習了一下覺得很不錯,所以在項目中也使用了這些不錯的技巧。趁周末有空,寫個博客記錄一下2018-06-06
詳解Vue一個案例引發(fā)「內(nèi)容分發(fā)slot」的最全總結(jié)
這篇文章主要介紹了詳解Vue一個案例引發(fā)「內(nèi)容分發(fā)slot」的最全總結(jié),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-12-12
vue計算屬性無法監(jiān)聽到數(shù)組內(nèi)部變化的解決方案
今天小編就為大家分享一篇vue計算屬性無法監(jiān)聽到數(shù)組內(nèi)部變化的解決方案,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-11-11
vue-cli中vue本地實現(xiàn)跨域調(diào)試接口
這篇文章主要介紹了vue-cli中vue本地實現(xiàn)跨域調(diào)試接口,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-01-01

