前端vue项目的打包更新并提醒用户刷新页面

前端每次改动重新部署项目的时候,如果用户一直停留在页面上并未刷新使用,可能会存在数据问题或者一些其他bug,因此,当前端项目更新后,需要提醒用户去重新刷新页面后使用。

第一步 再build文件下创建version-webpack-plugin.js文件,或者同目录下创建

const fs = require('fs')
class VersionPlugin {
  apply (compiler) {
    compiler.plugin('done', function () {
      const outputPath = compiler.outputPath
      const versionFile = outputPath + '/version.json'
      const timestamp = Date.now()
      const content = `{"version": "${timestamp}"}`
 
      if (!fs.existsSync(outputPath)) {
        fs.mkdirSync(outputPath, { recursive: true })
      }
      fs.writeFileSync(versionFile, content, {
        encoding: 'utf8',
        flag: 'w'
      })
    })
  }
}
 
module.exports = { VersionPlugin }

第二步 在webpack.prod.conf.js文件中引入

const { VersionPlugin } = require('./version-webpack-plugin');
// ...
plugins: [
    ..., // 其他配置代码
        new VersionPlugin()
]

这样打包就会在dist文件下生成version.json文件

在这里插入图片描述
第三步 我这边是在路由上监听是否有更新

process.env.NODE_ENV !== 'development' && Vue.prototype.$axios.get(window.location.href.split('/#/')[0] + '/version.json?v=' + Date.now()).then(rsp => {
  let latestVersion = localStorage.getItem('latestVersion');
  let version = rsp.data.version;
  if (version) {
    if (latestVersion !== version) {
      MessageBox.confirm('有版本更新,是否刷新?', '版本更新', {
        confirmButtonText: '更新',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        localStorage.setItem('latestVersion', version);
        window.location.reload();
      });
    }
  }
});

完成😄

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue 项目中,当我们使用 Vue Router 创建了带有路由参数的页面,并将项目打包后,如果我们在页面刷新时发现路由参数消失了。这是因为在打包后的项目中,Vue Router 将路由参数创建为前端路由,在刷新页面时,浏览器会向服务器发送请求获取页面,而服务器只返回打包后的静态文件,没有保存路由参数的信息。 为了解决这个问题,我们可以使用一些方法来保存并恢复路由参数。一种常见的方法是使用服务端渲染 (SSR)。通过 SSR,我们可以在服务器端将路由参数一同传递给浏览器,以便在页面刷新时能够恢复参数。但是,SSR 需要特殊的设置和服务器支持,并且会增加项目的复杂性和开发难度。 另一种方法是使用浏览器的本地存储机制,如 localStorage 或 sessionStorage。在页面加载时,我们可以将路由参数存储在本地存储中,然后在页面刷新后,通过读取本地存储中的参数来恢复。这种方法相对简单,但需要我们手动管理本地存储的数据,以确保数据的正确性和安全性。 除了以上两种方法,还可以考虑使用 URL 查询参数来保存路由参数。在页面加载时,我们可以通过读取 URL 查询参数来获取路由参数,并在刷新页面时,将参数添加到 URL 中以便浏览器重新获取。这个方法相对简单,但会在 URL 上暴露参数,可能对用户体验和安全性产生影响,需要谨慎使用。 综上所述,当 Vue 项目打包后,在页面刷新时路由参数会消失,我们可以考虑使用 SSR、浏览器本地存储或 URL 查询参数来保存和恢复路由参数。根据项目的需求和实际情况,选择最合适的方法来解决问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值