vue项目优化经验总结
前言:首先可以通过安装
npm i webpack-bundle-analyzer
插件,在webpack中引入并配置后,执行npm run build
打包构建后,浏览器会自动打开分析结果
1 | // vue.config.js |
可以根据得到的分析结果,对项目进行有针对性的优化…
懒加载
路由懒加载
1
2
3
4
5const router = new VueRouter({
routes: [
{path: '/foo', component: () => import('./Foo.vue') }
]
})图片懒加载:可以使用
vue-lazyload
插件
缓存优化
- 使用
keep-alive
缓存组件
打包优化
- 按需引入UI组件库
- 开启
gzip
打包压缩 - 关闭源码映射,不生成
sourcemap
文件
首屏优化
数据加载使用loding骨架屏
采用SSR服务端渲染
代码层面的优化
避免
v-if
和v-for
同级使用,在vue2 中 v-for 的 优先级比 v-if 高,容易导致渲染错误使用
v-for
时设置key的值,并且使用数据中的唯一标识,尽量不使用index作为标识,有利于dom定位和diff算法根据场景合理选择使用
v-if
或v-show
将无状态的组件标记为函数式组件(静态组件)
1
2
3
4
5
6
7
8
9
10
11
12
13<!-- 只接收父组件传过来的值,自己不做处理,无状态,不创建实例 -->
<template>
<div class="page">
<span v-if='prop.show'>1<span>
<span v-else>2<span>
</div>
</template>
<script>
export default{
props: ['show']
}
</script>事件销毁:Vue组件在销毁时,会自动解绑它的全部指令事件及监听器,但仅限于组件本身。
比如定时器等最好在销毁阶段手动销毁,避免内存泄漏子组件分割:将子组件中耗时的任务交给组件自己管理,不影响整体页面的加载
变量本地化:减少使用
this.xxx
的形式获取数据,可以用一个变量先获取数据,然后在这个变量上处理数据。模块化、组件化
长列表优化(插件:vue-virtual-scroller )
- 纯粹做数据展示,不需要热更新的场景🎬:处于data中的数据会被监视,发生变化时数据就发生变化
所以采用object.freeze(数据)方法冻结数据。 - 采用虚拟滚动,只渲染视口部分的数据,也就是说渲染固定的DOM节点个数
- 纯粹做数据展示,不需要热更新的场景🎬:处于data中的数据会被监视,发生变化时数据就发生变化
- 标题: vue项目优化经验总结
- 作者: JiangWen
- 创建于 : 2022-04-16 18:50:24
- 更新于 : 2024-11-24 17:45:51
- 链接: https://blog.jiangwen.site/2022/04/16/开发学习/vue项目优化经验总结/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论