一:编码阶段
- 尽量减少data中的数据,data中的数据都会增加getter和setter,会收集对应的watcher。
- v-if和v-for不能连用
- 如果需要使用v-for给每项元素绑定事件时使用事件代理
- SPA 页面采用keep-alive缓存组件
- 在更多的情况下,使用v-if替代v-show
- key保证唯一
- 使用路由懒加载、异步组件
- 防抖、节流
- 第三方模块按需导入
- 长列表滚动到可视区域动态加载
- 图片懒加载
二: SEO优化
- 预渲染
- 服务端渲染SSR
三: 打包优化
- 压缩代码
- Tree Shaking/Scope Hoisting(production的优化)
Tree Shaking:通常用于打包时移除JavaScript中未引用的代码
开发时引入一个模块,只用到其中的一个功能,那么打包的时候只会打包用到的功能。
Scope Hoisting:把你的打散的代码整个在一起(只引用一次 的代码)
- 使用cdn加载第三方模块
- 多线程打包happypack
- sourceMap优化
- splitChunks抽离公共文件
splitChunks抽离公共文件
webpack 4.x
optimization与output同级
optimization: {
runtimeChunk: {
name: 'manifest'
},
splitChunks: {
chunks: 'async',
minChunks: 2,
maxAsyncRequests: 5,
maxInitialRequests: 3,
name: false,
cacheGroups: {
vendor: {
name: 'vendor',
// chunks 有三个可选值,”initial”, “async” 和 “all”. 分别对应优化时只选择初始的chunks,所需要的chunks 还是所有chunk
chunks: 'initial',
priority: -10,
reuseExistingChunk: false,
test: /[\\/]node_modules[\\/]/
}
}
}
},
四:用户体验
- 骨架屏
- PWA
还可以使用缓存(客户端缓存、服务端缓存)优化、服务端开启gzip压缩等。
五:解决vue打包wendor过大的问题
https://www.jianshu.com/p/b2fe6aebe691
网友评论