1.按需引入第三方组件,webpack对第三方资源包进行分包配置
externals: { vue: 'Vue', vuex: 'Vuex', 'vue-router': 'VueRouter', axios: 'axios', 'element-ui': 'ELEMENT'}//key 为依赖包名字,value为抛出的全局变量2.vue-router懒加载
const RankList = () => import( /* webpackChunkName: "RankList" */ '@/components/RankList')/* webpackChunkName: "RankList" */ 是打包后文件名称,后面是文件路径。'@/components/RankList' 是文件路径。
//webpack代码中配置对应的chunkFilename
output: {
path: config.build.assetsRoot,
filename: utils.assetsPath('js/[name].[chunkhash].js'),//文件格式,文件名.文件哈希
chunkFilename: utils.assetsPath('js/[name].[chunkhash].js')//文件切割后的文件名称。这里的name对应的就是路由中引入文件时候的webpackChunkName
}3.进行图片的压缩,雪碧图的引入
4.开启gizp压缩,前端配置gzip压缩,并且服务端使用nginx开启gzip,用来减小网络传输的流量大小。
npm i compression-webpack-plugin -D//webpack配置
const CompressionWebpackPlugin = require('compression-webpack-plugin')plugins: [ new CompressionWebpackPlugin()]
gzip压缩适用于大部分浏览器,如果不适用的小众浏览器,也会直接访问原始文件
当打开浏览器F12出现
Content-Encoding: gzip标识gizp配置成功
5.webpack相关配置优化
- 使用uglifyjs-webpack-plugin插件代替webpack自带UglifyJsPlugin插件来压缩JS文件;生产环境关闭源码映射,一方面能减少代码包的大小,另一方面也有利于系统代码安全;清除打印日志和debugger信息;配置SplitChunks 抽取公有代码,提升你的应用的性能
- 使用mini-xss-extract-plugin提取CSS 到单独的文件, 并使用optimize-css-assets-webpack-plugin来压缩CSS文件 。
6.前端代码的优化
- 合理使用v-if和v-show
- 合理使用watch和computed
- 使用v-for必须添加key, 最好为唯一id, 避免使用index, 且在同一个标签上,v-for不要和v-if同时使用
- 定时器的销毁。可以在beforeDestroy()生命周期内执行销毁事件;也可以使用$once这个事件侦听器,在定义定时器事件的位置来清除定时器