基于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 相关文章推荐
JS去除右边逗号的简单方法
Jul 03 Javascript
javascript页面渲染速度测试脚本分享
Apr 15 Javascript
jQuery设置和移除文本框默认值的方法
Mar 09 Javascript
JS中常用的正则表达式
Sep 29 Javascript
Node.js如何实现注册邮箱激活功能 (常见)
Jul 23 Javascript
客户端(vue框架)与服务器(koa框架)通信及服务器跨域配置详解
Aug 26 Javascript
js 索引下标之li集合绑定点击事件
Jan 12 Javascript
JavaScript中 ES6变量的结构赋值
Jul 10 Javascript
解决angularjs中同步执行http请求的方法
Aug 13 Javascript
深入理解 Koa 框架中间件原理
Oct 18 Javascript
Vue.js组件实现选项卡以及切换特效
Jul 24 Javascript
JavaScript实现Tab标签页切换的最简便方式(4种)
Jun 28 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
深入理解require与require_once与include以及include_once的区别
2013/06/05 PHP
PHP zip扩展Linux下安装过程分享
2014/05/05 PHP
PHP中的排序函数sort、asort、rsort、krsort、ksort区别分析
2014/08/18 PHP
php简单备份与还原MySql的方法
2016/05/09 PHP
深入理解PHP的远程多会话调试
2017/09/21 PHP
PHP+swoole+linux实现系统监控和性能优化操作示例
2019/04/15 PHP
jQuery的.live()和.die() 使用介绍
2011/09/10 Javascript
Javascript图像处理—虚拟边缘介绍及使用方法
2012/12/27 Javascript
Extjs单独定义各组件的实例代码
2013/06/25 Javascript
javascript中RegExp保留小数点后几位数的方法分享
2013/08/13 Javascript
jQuery实现鼠标滑过链接控制图片的滑动展开与隐藏效果
2015/10/28 Javascript
基于jquery实现鼠标左右拖动滑块滑动附源码下载
2015/12/23 Javascript
jquery 抽奖小程序实现代码
2016/10/12 Javascript
$.browser.msie 为空或不是对象问题的多种解决方法
2017/03/19 Javascript
Vue和Bootstrap的整合思路详解
2017/06/30 Javascript
JS中的Replace()传入函数时的用法详解
2017/09/11 Javascript
bootstrap表格内容过长时用省略号表示的解决方法
2017/11/21 Javascript
vue中实现methods一个方法调用另外一个方法
2018/02/08 Javascript
详解微信小程序canvas圆角矩形的绘制的方法
2018/08/22 Javascript
echarts实现词云自定义形状的示例代码
2019/02/20 Javascript
vue+element搭建后台小总结 el-dropdown下拉功能
2020/04/10 Javascript
Element的el-tree控件后台数据结构的生成以及方法的抽取
2020/03/05 Javascript
jQuery实现全选按钮
2021/01/01 jQuery
Python自定义函数实现求两个数最大公约数、最小公倍数示例
2018/05/21 Python
python使用PIL实现多张图片垂直合并
2019/01/15 Python
Django中celery执行任务结果的保存方法
2019/07/12 Python
Flask框架实现的前端RSA加密与后端Python解密功能详解
2019/08/13 Python
Python Pickle 实现在同一个文件中序列化多个对象
2019/12/30 Python
python实现音乐播放器 python实现花框音乐盒子
2020/02/25 Python
拉斯维加斯城市观光通行证:Las Vegas Pass
2019/05/21 全球购物
init进程的作用
2015/08/20 面试题
班长演讲稿范文
2014/04/24 职场文书
2015年元旦活动总结
2014/05/09 职场文书
2016公司年会通知范文
2015/04/25 职场文书
《好妈妈胜过好老师》:每个孩子的优秀都是有源头的
2020/01/03 职场文书
有趣的二维码:使用MyQR和qrcode来制作二维码
2021/05/10 Python