vue3+vite项目,页面长时间不点击切换路由报错

vue3+vite项目,页面长时间不点击切换路由报错,f5又可以正常访问,之前的vue2+webpackage都没出现过这个问题

长时间不点击切换路由导致的错误可能与Vite的HMR(热模块替换)机制有关。HMR是Vite的一个特性,它可以在开发过程中实现快速的模块热更新。

这个问题可能是由于缺乏自动刷新的机制造成的。有两个解决方案可以尝试:

  1. 使用vite.config.js配置文件中的server选项,并设置hmr: { overlay: false }。这样可以禁用Vite的错误覆盖页面,当出现错误时不会自动刷新页面,而是在控制台中展示错误信息。
// vite.config.js
export default {
  server: {
    hmr: {
      overlay: false
    }
  }
}
  1. 使用vite-plugin-pages插件提供的keepAlive功能。这个插件可以帮助保持一个页面的状态,即使路由发生变化也不会销毁和重建。这样可以防止长时间不点击导致的错误。

首先,安装vite-plugin-pages

npm install vite-plugin-pages

然后,在vite.config.js配置文件中添加以下代码:

// vite.config.js
import { defineConfig } from 'vite'
import { createVuePlugin } from 'vite-plugin-vue'
import pages from 'vite-plugin-pages'

// 其他配置
export default defineConfig({
  plugins: [
    createVuePlugin(),
    pages({
      // 其他配置
      keepAlive: [
        // 你的页面组件路径
        '/path/to/your/page.vue'
      ]
    })
  ]
})

这样,配置了keepAlive之后,在切换路由时页面属性将保持不变,避免错误发生。

另外,请确保你的项目已经更新到最新版本,并且安装的依赖包也是最新的版本。有时候,这些错误可能是由于依赖项版本不兼容导致的。

【相关推荐】



  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7585925
  • 你也可以参考下这篇文章:vue项目优化之页面的按需加载(vue+webpack)
  • 除此之外, 这篇博客: Vue3+Vite快速搭建vue项目中的 webpack的特点 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
    • webpack打包过程
      • 1.识别入口文件
      • 2.通过逐层识别模块依赖。(Commonjs、amd或者es6的import,webpack都会对其进行分析。来获取代码的依赖
      • 3.webpack做的就是分析代码。转换代码,编译代码,输出代码
      • 4.最终形成打包后的代码
    • webpack打包原理
      • 1.先逐级递归识别依赖,构建依赖图谱
      • 2.将代码转化成AST抽象语法树
      • 3.在AST阶段中去处理代码
      • 4.把AST抽象语法树变成浏览器可以识别的代码, 然后输出
    • wepback牛逼之处在于loader和plugin非常丰富,不过大多数博主都认为生态只是时间问题,毕竟vue也是很短时间就迅速火起来的
    • webpack缺点一。缓慢的服务器启动,当冷启动开发服务器时,基于打包器的方式是在提供服务前去急切地抓取和构建你的整个应用。
    • webpack致命缺点:热更新效率低下
      • 当基于打包器启动时,编辑文件后将重新构建文件本身。显然我们不应该重新构建整个包,因为这样更新速度会随着应用体积增长而直线下降。
      • 一些打包器的开发服务器将构建内容存入内存,这样它们只需要在文件更改时使模块图的一部分失活,但它也仍需要整个重新构建并重载页面。
      • 这样代价很高,并且重新加载页面会消除应用的当前状态,所以打包器支持了动态模块热重载(HMR):允许一个模块 “热替换” 它自己,而对页面其余部分没有影响。
      • 这大大改进了开发体验 - 然而,在实践中我们发现,即使是 HMR 更新速度也会随着应用规模的增长而显著下降。
    • Vite的主要功能就是通过劫持浏览器的这些请求,并在后端进行相应的处理将项目中使用的文件通过简单的分解与整合
    • 然后再返回给浏览器,Vite整个过程中没有对文件进行打包编译,所以其运行速度比原始的webpack开发编译速度快出许多!

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^