Skip to content
On this page

Vue项目优化

代码层面优化

  • v-if 和 v-show 的合理运用

v-if 适用于在运行时很少改变条件,不需要频繁切换条件的场景;
v-show 则适用于需要非常频繁切换条件的场景。

  • computed 和 watch 的合理运用

合理使用computed属性和watch监听来减少不必要的计算和更新。例如下面v-for/v-if的例子。

  • v-for循环时必须为item添加key,同时避免v-if

在使用v-for指令时,确保每个列表项都有唯一的key属性,以提高列表渲染的效率。

v-for 比 v-if 优先级高,如果每一次都需要遍历整个数组,将会影响速度,尤其是当之需要渲染很小一部分的时候,可以替换成 computed 属性,将不需要显示的部分过滤掉。

  • 销毁无用的事件

Vue 组件销毁时,会自动清理它与其它实例的连接,解绑它的全部指令及事件监听器,但是仅限于组件本身的事件。 如果在 js 内使用 addEventListene 等方式是不会自动销毁的,我们需要在组件销毁时手动移除这些事件的监听,以免造成内存泄露。

例如,进入组件后通过addEventlistener在mounted生命周期中对区域的滚动进行了监听。在组件销毁时也要同时将该事件进行销毁。

  • 路由懒加载

将路由拆分为多个异步加载的模块,按需加载,避免一次性加载全部路由模块。还可以使用Vue的过渡效果为路由切换添加动画效果,提升用户体验。

  • 使用异步组件和按需加载

通过使用异步组件和按需加载,可以减小初始加载的文件大小,提高首次加载速度。可以使用Vue的import()语法或Vue Router的lazyLoad方法来实现异步加载。

  • 使用keep-alive缓存组件

对于频繁切换的组件,可以使用Vue的<keep-alive>标签将其缓存,以避免重复的渲染和销毁。

图片优化

  • 压缩图片大小

使用图片压缩工具(如TinyPNG)来减小图片文件的大小,提高加载速度。

  • 使用图片懒加载

对于页面中的大量图片,可以使用Vue插件(如vue-lazyload)来实现图片的懒加载,只在图片进入可视区域时进行加载,减少初始加载时间。

数据请求优化

  • 分页处理

对于请求量较大的数据,建议使用分页的方式来处理数据。

  • 合理使用缓存

对于不经常变动的数据,可以使用浏览器缓存或服务端缓存来减少数据请求。例如用户的简单信息,token等。

  • 减少请求数量

合并多个请求为一个请求,减少网络请求的次数。

  • 使用异步请求

将耗时的数据请求放在异步任务中执行,避免阻塞主线程。

Webpack优化

  • 使用Webpack的代码分割功能

将代码分割为多个小块,按需加载,减少初始加载的文件大小。

  • 压缩打包文件

使用Webpack的压缩插件(如UglifyJSPlugin)对打包文件进行压缩,减小文件大小。

  • 配置缓存

使用Webpack的缓存功能,减少重新构建的时间。