基于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 相关文章推荐
同一个表单 根据要求递交到不同页面的实现方法小结
Aug 05 Javascript
jquery.pagination.js 无刷新分页实现步骤分享
May 23 Javascript
jquery的ajax跨域请求原理和示例
May 08 Javascript
jquery使用slideDown实现模块缓慢拉出效果的方法
Mar 27 Javascript
JavaScript实现点击按钮字体放大、缩小
Feb 29 Javascript
JS实现把鼠标放到链接上出现滚动文字的方法
Apr 06 Javascript
Javascript中函数名.length属性用法分析(对比arguments.length)
Sep 16 Javascript
BootStrap CSS全局样式和表格样式源码解析
Jan 20 Javascript
jQuery ajax动态生成table功能示例
Jun 14 jQuery
使用cookie绕过验证码登录的实现代码
Oct 12 Javascript
vue实现购物车抛物线小球动画效果的方法详解
Feb 13 Javascript
使用layui定义一个模块并使用的例子
Sep 14 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
PHP4实际应用经验篇(1)
2006/10/09 PHP
smarty实例教程
2006/11/19 PHP
PHP 程序员的调试技术小结
2009/11/15 PHP
php下正则来匹配dede模板标签的代码
2010/08/21 PHP
PHP文件注释标记及规范小结
2012/04/01 PHP
基于Jquery的文字滚动跑马灯插件(一个页面多个滚动区)
2010/07/26 Javascript
jquery.cookie.js 操作cookie实现记住密码功能的实现代码
2011/04/27 Javascript
JQuery AJAX 中文乱码问题解决
2013/06/05 Javascript
jquery弹出框的用法示例(2)
2013/08/26 Javascript
用JQuery实现全选与取消的两种简单方法
2014/02/22 Javascript
jquery插件开发之实现jquery手风琴功能分享
2014/03/10 Javascript
Jquery原生态实现表格header头随滚动条滚动而滚动
2014/03/18 Javascript
JavaScript indexOf方法入门实例(计算指定字符在字符串中首次出现的位置)
2014/10/17 Javascript
黑帽seo劫持程序,js劫持搜索引擎代码
2015/09/15 Javascript
canvas知识总结
2017/01/25 Javascript
js实现随机点名系统(实例讲解)
2017/10/18 Javascript
Vue 2.5 Level E 发布了: 新功能特性一览
2017/10/24 Javascript
如何用原生js写一个弹窗消息提醒插件
2019/05/24 Javascript
在Vue项目中用fullcalendar制作日程表的示例代码
2019/08/04 Javascript
extjs图表绘制之条形图实现方法分析
2020/03/06 Javascript
vue项目使用高德地图的定位及关键字搜索功能的实例代码(踩坑经验)
2020/03/07 Javascript
[01:48]2018DOTA2亚洲邀请赛主赛事第二日五佳镜头 VG完美团战逆转TNC
2018/04/05 DOTA
Python正则表达式分组概念与用法详解
2017/06/24 Python
python3使用pyqt5制作一个超简单浏览器的实例
2017/10/19 Python
Python中进程和线程的区别详解
2017/10/29 Python
TF-IDF与余弦相似性的应用(二) 找出相似文章
2017/12/21 Python
django反向解析和正向解析的方式
2018/06/05 Python
Python中的heapq模块源码详析
2019/01/08 Python
Python引入多个模块及包的概念过程解析
2020/09/21 Python
Android笔试题总结
2014/11/29 面试题
DataList 能否分页,请问如何实现?
2015/05/03 面试题
HR求职自荐信范文
2014/06/21 职场文书
法英专业大学生职业生涯规划范文:衡外情,量己力!
2014/09/23 职场文书
英语四级考试作弊检讨书
2014/09/29 职场文书
2015年学校体育工作总结
2015/04/22 职场文书
2016年学校安全教育月活动总结
2016/04/06 职场文书