基于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 相关文章推荐
jquery each()源代码
Feb 14 Javascript
js点击页面其它地方将某个显示的DIV隐藏
Jul 12 Javascript
node.js中的fs.openSync方法使用说明
Dec 17 Javascript
js实现用户注册协议倒计时的方法
Jan 21 Javascript
jQuery Ajax使用实例
Apr 16 Javascript
利用Angularjs和bootstrap实现购物车功能
Aug 31 Javascript
JavaScript SHA-256加密算法详细代码
Oct 06 Javascript
JS实现获取来自百度,Google,soso,sogou关键词的方法
Dec 21 Javascript
微信小程序使用map组件实现解析经纬度功能示例
Jan 22 Javascript
jQuery访问json文件中数据的方法示例
Jan 28 jQuery
基于jsbarcode 生成条形码并将生成的条码保存至本地+源码
Apr 27 Javascript
vue实现tab栏点击高亮效果
Aug 19 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
PHP大转盘中奖概率算法实例
2014/10/21 PHP
php显示指定目录下子目录的方法
2015/03/20 PHP
jquery实现非叠加式的搜索框提示效果
2014/01/07 Javascript
详解JavaScript中getFullYear()方法的使用
2015/06/10 Javascript
JS实现Select的option上下移动的方法
2016/03/01 Javascript
浅谈Javascript中的12种DOM节点类型
2016/08/19 Javascript
jQuery实现CheckBox全选、全不选功能
2017/01/11 Javascript
jQuery基于ajax方式实现用户名存在性检查功能示例
2017/02/10 Javascript
Angular中ng-bind和ng-model的区别实例详解
2017/04/10 Javascript
js处理包含中文的字符串实例
2017/10/11 Javascript
基于substring()和substr()的使用以及区别(实例讲解)
2017/12/28 Javascript
一个Vue视频媒体多段裁剪组件的实现示例
2018/08/09 Javascript
Vue之Mixins(混入)的使用方法
2019/09/24 Javascript
小程序如何自主实现拦截器的示例代码
2019/11/04 Javascript
es6中new.target的作用和使用场景简单示例分析
2020/03/14 Javascript
[34:39]Secret vs VG 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
[01:00:13]完美世界DOTA2联赛 LBZS vs Forest 第一场 11.07
2020/11/09 DOTA
wxpython 学习笔记 第一天
2009/03/16 Python
Python的Bottle框架中实现最基本的get和post的方法的教程
2015/04/30 Python
详解Python中expandtabs()方法的使用
2015/05/18 Python
解决python线程卡死的问题
2019/02/18 Python
HTML的form表单和django的form表单
2019/07/25 Python
Python如何实现动态数组
2019/11/02 Python
python3光学字符识别模块tesserocr与pytesseract的使用详解
2020/02/26 Python
matplotlib图例legend语法及设置的方法
2020/07/28 Python
Python headers请求头如何实现快速添加
2020/11/03 Python
IGK Hair官网:喷雾、洗发水、护发素等
2020/11/03 全球购物
EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的
2015/07/24 面试题
市场营销毕业生自荐信
2013/11/23 职场文书
学习新党章思想汇报
2014/01/09 职场文书
销售会计岗位职责
2014/03/15 职场文书
利群广告词
2014/03/20 职场文书
2014年百日安全生产活动总结
2014/05/04 职场文书
业绩倒数第一的检讨书
2014/09/24 职场文书
2015重阳节座谈会主持词
2015/07/30 职场文书
Python基本的内置数据类型及使用方法
2022/04/13 Python