基于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的Repeater实现代码
Jul 17 Javascript
JavaScript 原型学习总结
Oct 29 Javascript
createElement与createDocumentFragment的点点区别小结
Dec 19 Javascript
javascript通过navigator.userAgent识别各种浏览器
Oct 25 Javascript
通过js为元素添加多项样式,浏览器全兼容写法
Aug 30 Javascript
jQuery实现鼠标滚轮动态改变样式或效果
Jan 05 Javascript
删除javascript所创建子节点的方法
May 21 Javascript
AngularJS实现动态编译添加到dom中的方法
Nov 04 Javascript
DropDownList控件绑定数据源的三种方法
Dec 24 Javascript
详解js访问对象的属性和方法
Oct 25 Javascript
JS/CSS实现字符串单词首字母大写功能
Sep 03 Javascript
JS ES6异步解决方案
Apr 29 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判断访问IP的方法
2015/06/19 PHP
PHP实现操作redis的封装类完整实例
2015/11/14 PHP
深入理解PHP JSON数组与对象
2016/07/19 PHP
对Jquery中的ajax再封装,简化操作示例
2014/02/12 Javascript
生成二维码方法汇总
2014/12/26 Javascript
JS 作用域与作用域链详解
2015/04/07 Javascript
Jquery使用val方法读写value值
2015/05/18 Javascript
整理JavaScript创建对象的八种方法
2015/11/03 Javascript
总结JavaScript三种数据存储方式之间的区别
2016/05/03 Javascript
bootstrap 下拉多选框进行多选传值问题代码分析
2017/02/14 Javascript
JavaScript获取移动设备型号的实现代码(JS获取手机型号和系统)
2018/03/10 Javascript
vue计算属性及使用详解
2018/04/02 Javascript
微信小程序遍历Echarts图表实现多个饼图
2019/04/25 Javascript
JavaScript中的ES6 Proxy的具体使用
2019/06/16 Javascript
python去除所有html标签的方法
2015/05/05 Python
分享一个可以生成各种进制格式IP的小工具实例代码
2017/07/28 Python
Python数据集切分实例
2018/12/08 Python
pandas 使用均值填充缺失值列的小技巧分享
2019/07/04 Python
Python操作多维数组输出和矩阵运算示例
2019/11/28 Python
Python全面分析系统的时域特性和频率域特性
2020/02/26 Python
python实现从ftp服务器下载文件
2020/03/03 Python
python由已知数组快速生成新数组的方法
2020/04/08 Python
HTML5边玩边学(2)基础绘图实现方法
2010/09/21 HTML / CSS
html5 canvas里绘制椭圆并保持线条粗细均匀的技巧
2013/03/25 HTML / CSS
英国在线药房:Chemist.co.uk
2019/03/26 全球购物
.NET里面如何取得当前的屏幕分辨率
2012/12/06 面试题
个人实用简单的自我评价
2013/10/19 职场文书
酒店总经理职务说明书
2014/02/26 职场文书
2014年维修电工工作总结
2014/11/20 职场文书
2014年创先争优工作总结
2014/12/11 职场文书
语文教师个人工作总结
2015/02/06 职场文书
承兑汇票延期证明
2015/06/23 职场文书
2015小学师德工作总结
2015/07/21 职场文书
酒店厨房管理制度
2015/08/06 职场文书
JS高级程序设计之class继承重点详解
2022/07/07 Javascript
Win11 25163.1010更新补丁KB5016904推送,测试服务验证管道(附更新修复汇总)
2022/07/23 数码科技