基于vue-cli npm run build之后vendor.js文件过大的解决方法


Posted in Javascript onSeptember 27, 2018

问题

vue-cli npm run build命令默认把dependencies中的依赖统一打包,导致vendor.js文件过大,出现首屏加载过于缓慢的问题。

解决方案

像vue、axios、element-ui这些基本上不会改变的依赖我们可以把它们用cdn导入,没有必要打包到vendor.js中。

1.在项目根目录index.html使用cdn节点导入

<div id="app"></div>
<!-- 先引入 Vue -->
<!--开发环境-->
<script src="https://cdn.bootcss.com/vue/2.5.3/vue.js"></script>
<!--生产环境-->
<!--<script src="https://cdn.bootcss.com/vue/2.5.3/vue.min.js"></script>-->
<!-- 引入组件库 -->
<script src="https://cdn.bootcss.com/axios/0.17.1/axios.min.js"></script>
<script src="https://cdn.bootcss.com/element-ui/1.4.10/index.js"></script>

2.项目根目录下build/webpack.base.config.js中添加externals

externals: {
 vue: 'Vue',
 'element': 'element-ui',
 'axios':'axios',
 },

3.mian.js中import ... from ...就可以去掉了,若没去掉webpack还是会把对应的依赖进行打包。

2018.01.27补充

在项目config/index.js中可以开启gzip压缩,对打包优化也有很大的帮助

1.首先安装插件 compression-webpack-plugin

cnpm install --save-dev compression-webpack-plugin

2.设置productionGzip: true

// Gzip off by default as many popular static hosts such as
 // Surge or Netlify already gzip all static assets for you.
 // Before setting to `true`, make sure to:
 // npm install --save-dev compression-webpack-plugin
 productionGzip: true,
 productionGzipExtensions: ['js', 'css'],

 // Run the build command with an extra argument to
 // View the bundle analyzer report after build finishes:
 // `npm run build --report`
 // Set to `true` or `false` to always turn it on or off
 bundleAnalyzerReport: process.env.npm_config_report

3.npm run build执行后会发现每个js和css文件会压缩一个gz后缀的文件夹,浏览器如果支持g-zip 会自动查找有没有gz文件 找到了就加载gz然后本地解压 执行。

以上这篇基于vue-cli npm run build之后vendor.js文件过大的解决方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript 打印页面代码
Mar 24 Javascript
JS 控制非法字符的输入代码
Dec 04 Javascript
按给定几率进行随机抽取的js代码
Dec 28 Javascript
Egret引擎开发指南之发布项目
Sep 03 Javascript
JavaScript中遍历对象的property的3种方法介绍
Dec 30 Javascript
如何防止JavaScript自动插入分号
Nov 05 Javascript
浅谈JavaScript变量的自动转换和语句
Jun 12 Javascript
探究Vue.js 2.0新增的虚拟DOM
Oct 20 Javascript
vue.js源代码core scedule.js学习笔记
Jul 03 Javascript
老生常谈js中的MVC
Jul 25 Javascript
关于vue-router的beforeEach无限循环的问题解决
Sep 09 Javascript
javascript自定义右键菜单插件
Dec 16 Javascript
vue-cli的工程模板与构建工具详解
Sep 27 #Javascript
Vue项目查看当前使用的elementUI版本的方法
Sep 27 #Javascript
详解如何用VUE写一个多用模态框组件模版
Sep 27 #Javascript
解决vue项目nginx部署到非根目录下刷新空白的问题
Sep 27 #Javascript
vue上传图片到oss的方法示例(图片带有删除功能)
Sep 27 #Javascript
浅谈vue项目4rs vue-router上线后history模式遇到的坑
Sep 27 #Javascript
详解关于vue2.0工程发布上线操作步骤
Sep 27 #Javascript
You might like
Web程序工作原理详解
2014/12/25 PHP
JavaScript 学习 - 提高篇
2007/02/02 Javascript
兼容ie和firefox js关闭代码
2008/12/11 Javascript
JavaScript的eval JSON object问题
2009/11/15 Javascript
JavaScript高级程序设计 阅读笔记(四) ECMAScript中的类型转换
2012/02/27 Javascript
onclick与listeners的执行先后问题详细解剖
2013/01/07 Javascript
jQuery当鼠标悬停时放大图片的效果实例
2013/07/03 Javascript
javascript验证身份证完全方法具体实现
2013/11/18 Javascript
javascript单例模式的简单实现方法
2015/07/25 Javascript
JavaScript知识点总结(十一)之js中的Object类详解
2016/05/31 Javascript
JS实现简单抖动效果
2017/06/01 Javascript
Vue.extend构造器的详解
2017/07/17 Javascript
详解vue2.0 使用动态组件实现 Tab 标签页切换效果(vue-cli)
2017/08/30 Javascript
原生js调用json方法总结
2018/02/22 Javascript
Koa 中的错误处理解析
2019/04/09 Javascript
微信小程序如何调用新闻接口实现列表循环
2019/07/02 Javascript
vue从一个页面跳转到另一个页面并携带参数的解决方法
2019/08/12 Javascript
简单分析js中的this的原理
2019/08/31 Javascript
JavaScript实现点击出现子菜单效果
2021/02/08 Javascript
Python中的字符串类型基本知识学习教程
2016/02/04 Python
深入flask之异步非堵塞实现代码示例
2018/07/31 Python
python切片(获取一个子列表(数组))详解
2019/08/09 Python
详解Python中的分支和循环结构
2020/02/11 Python
python3用urllib抓取贴吧邮箱和QQ实例
2020/03/10 Python
解决Python安装cryptography报错问题
2020/09/03 Python
python利用google翻译方法实例(翻译字幕文件)
2020/09/21 Python
scrapy redis配置文件setting参数详解
2020/11/18 Python
兰蔻美国官网:Lancome美国
2017/04/25 全球购物
JAVA中的关键字有什么特点
2014/03/07 面试题
个人教师自我评价范文
2013/12/02 职场文书
《在大海中永生》教学反思
2014/02/24 职场文书
2014年百日安全生产活动总结
2014/05/04 职场文书
学习型家庭事迹材料
2014/12/20 职场文书
索赔员岗位职责
2015/02/15 职场文书
2015民办小学年度工作总结
2015/05/26 职场文书
简历自我评价:教师师德表现自我评价
2019/04/24 职场文书