这篇文章给大家介绍如何优化Vue项目,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
<强> Vue项目完成后就要从开发环境转成生产环境强>
一些第三方的包体积过大,导致生成js文件过于庞大,这是时候可以生成打包报告来查看项目中的问题
1。生成报告有两种方式,一种使用npm运行构建,报告
2。另一种使vue脚用手架的ui可视化面板,在项目中输入vue ui
3。点击生产环境下的运行按钮,可以看到打包出来的js文件一共有2米之多,js/chunk-vendors。js就是一些项目依赖文件,
再右侧可以看到element-ui和echarts以及富文本编辑器,树状表格插件这几个依赖项的体积最大,接下来可以针对这些做优化
4。复制两份main.js文件命名为main-dev.js和动力。js,分别代表开发环境和生产环境
通过vue.config。js修改webpack的默认配置,为开发模式与发布模式指定不同的打包入口
module.exports =, { ,,lintOnSave:假的, ,,chainWebpack: config =祝辞,{ ,,,//,,,发布模式 ,,,config.when (process.env.NODE_ENV ===, & # 39;生产# 39;,,config =祝辞,{ ,,,,,config.entry(& # 39;应用# 39;).clear阀门()(& # 39;。/src/main-prod.js& # 39;) ,,,}) ,,,//,开发模式 ,,,config.when (process.env.NODE_ENV ===, & # 39;发展# 39;,,config =祝辞,{ ,,,,,config.entry(& # 39;应用# 39;).clear阀门()(& # 39;。/src/main-dev.js& # 39;) ,,,}) ,,} }
5。默认情况下,通过导入语法导入的第三方依赖包,最终会被打包合并到同一个文件中,从而导致打包成功后,单文件体积过大的问题。
为了解决上述问题,可以通过webpack的外部节点,来配置并加载外部的CDN资源。凡是声明在外部环境中的第三方依赖包,都不会被打包
module.exports =, { ,,lintOnSave:假的, ,,chainWebpack: config =祝辞,{ ,,,//,,,发布模式 ,,,config.when (process.env.NODE_ENV ===, & # 39;生产# 39;,,config =祝辞,{ ,,,,,config.entry(& # 39;应用# 39;).clear阀门()(& # 39;。/src/main-prod.js& # 39;) ,,,,,config.set(& # 39;外部# 39;,,{ ,,,,,,,vue:, & # 39; vue # 39; ,,,,,,,axios:, & # 39; axios& # 39; ,,,,,,,lodash:, & # 39; _ # 39; ,,,,,,,echarts:, & # 39; echarts& # 39; ,,,,,,,nprogress:, & # 39; NProgress& # 39; ,,,,,,,& # 39;vue-quill-editor& # 39;:, & # 39; VueQuillEditor& # 39; ,,,,,}) ,,,,,config.plugin (& # 39; html # 39;) . tap (args =祝辞,{ ,,,,,,,arg游戏[0].isProd =,真的 ,,,,,,,return 参数 ,,,,,}) ,,,}) ,,,//,开发模式 ,,,config.when (process.env.NODE_ENV ===, & # 39;发展# 39;,,config =祝辞,{ ,,,,,console.log(配置); ,,,,,config.entry(& # 39;应用# 39;).clear阀门()(& # 39;。/src/main-dev.js& # 39;) ,,,,,config.plugin (& # 39; html # 39;) . tap (args =祝辞,{ ,,,,,,,arg游戏[0].isProd =false ,,,,,,,return 参数 ,,,,,}) ,,,}) ,,} }
6。同时在公共目录下的指数。html文件中,引入这些第三方依赖包的CDN文件
打包编译,可以看到重新打包出来的文件从原先的2 m变成了200 k
7。然后可以对路由进行懒加载,安装@babel/plugin-syntax-dynamic-import依赖
(上一个插件transform-remove-console作用是在生产环境清除全部控制台。日志)
const prodPlugins =, [] if (process.env.NODE_ENV ===, & # 39;生产# 39;),{ prodPlugins.push才能(& # 39;transform-remove-console& # 39;) } module.exports =, { 预设:,才能 ,,,& # 39;@vue/cli-plugin-babel预设# 39; ,,, 插件才能:, ,,,( ,,,,,& # 39;组件# 39; ,,,,,{ ,,,,,,,libraryName:, & # 39; element-ui& # 39; ,,,,,,,styleLibraryName:, & # 39; theme-chalk& # 39; ,,,,,} ,,,, ,,,…prodPlugins, ,,,& # 39;@babel/plugin-syntax-dynamic-import& # 39; ,,) null null null null null null null null null null null null null null null null null null null null null null null null null null null null null null如何优化Vue项目