1、vue3内部使用了 Tree-shaking 技术,没有使用到的api,在打包时不会进行打包,直接进行移除了。
2、可以在vue.config.js中进行配置,一些consoel.log等打印输出的,vue的警告等在生产的时候,尽量不要展示,还有sourcemap等
3、使用异步组件进行异步加载const Foo = defineAsyncComponent(() => import('./Foo.vue'))
4、props父组件传参的稳定性
- 当传递的props值进行更新的时候,子组件就会进行更新
<ListItem
v-for="item in list"
:id="item.id"
:active-id="activeId" />
- 当每次activeId每次更新的时候,子组件都会全部进行更新,此时我们应该加一个判断
<ListItem
v-for="item in list"
:id="item.id"
:active="item.id === activeId" />
- 只有当activeId等于item.id的时候,在进行更新
5、也可以使用v-once,v-memo具体的场景使用,进行优化
6、当我们渲染大型的列表的时候,可以使用虚拟列表进行优化
7、当我们使用响应式的api进行声明变量
8、有的页面我们可以使用缓存(可以是keep-alive,也可以使用本地),减少请求数据
9、使用ui框架进行按需引入
10、打包时开启gzip进行压缩,公共的样式,js文件等放到src下的assets会进行压缩
11、图片的优化,一般图标尽可能的使用iconfont中的图标,不要使用图片,也可以使用雪碧图(这个要看你的项目适不适合,雪碧图也是有缺点的),太大的图片进行压缩,可以把图片放到cdn上托管,减少使用本地图片(不过这个取决于网络,没有本地图片加载的快)或者使用图片懒加载(vue-lazyload)
有的插件可以使用cdn进行引入(不过这个也是有风险的,有时候插件进行更新,你就需要替换版本,否则会导致项目有问题)
12、在我们使用vue框架开发的时候,一些指令的合理使用
- v-for跟v-if的使用,现在v3中v-if的优先级大于v-for
- v-show和v-if的使用
- v-for需要搭配key的使用,在diff算法更新的时候,可以更快速的只更新需要更新的数据,而不是无脑的全部进行更新
- computed和watch的合理运用
- 使用监听/定时器的时候,在页面卸载的时候进行移除监听/取消定时器
- 将公共的样式,js等进行提取
- 合理的使用组件(组件的渲染要比dom渲染消耗的性能要大一点)
10、路由使用懒加载component:()=>import('../views/home.vue')