基于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自定义事件代码说明
Jan 31 Javascript
Document:getElementsByName()使用方法及示例
Oct 28 Javascript
简介AngularJS的视图功能应用
Jun 17 Javascript
ECMAScript6快速入手攻略
Jul 18 Javascript
前端js实现文件的断点续传 后端PHP文件接收
Oct 14 Javascript
微信小程序 常见问题总结(4058,40013)及解决办法
Jan 11 Javascript
浅谈js中用$(#ID)来作为选择器的问题(id重复的时候)
Feb 14 Javascript
非常实用的vue导航钩子
Mar 20 Javascript
vue-cli项目如何使用vue-resource获取本地的json数据(模拟服务端返回数据)
Aug 04 Javascript
关闭Vue计算属性自带的缓存功能方法
Mar 02 Javascript
JS中间件设计模式的深入探讨与实例分析
Apr 11 Javascript
解决js中的setInterval清空定时器不管用问题
Nov 17 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
建立动态的WML站点(三)
2006/10/09 PHP
php根据日期或时间戳获取星座信息和生肖等信息
2015/10/20 PHP
Javascript创建自定义对象 创建Object实例添加属性和方法
2012/06/04 Javascript
主页面中的两个iframe实现鼠标拖动改变其大小
2013/04/16 Javascript
在JavaScript中用getMinutes()方法返回指定的分时刻
2015/06/10 Javascript
JavaScript的jQuery库中ready方法的学习教程
2015/08/14 Javascript
JS鼠标拖拽实例分析
2015/11/23 Javascript
js移动焦点到最后位置的简单方法
2016/11/25 Javascript
Ajax和Comet技术总结
2017/02/19 Javascript
Webpack打包慢问题的完美解决方法
2017/03/16 Javascript
原生JS实现导航下拉菜单效果
2020/11/25 Javascript
webpack@v4升级踩坑(小结)
2018/10/08 Javascript
值得收藏的八个常用的js正则表达式
2018/10/19 Javascript
js实现简单贪吃蛇游戏
2020/05/15 Javascript
用vite搭建vue3应用的实现方法
2021/02/22 Vue.js
[02:11]2014DOTA2 TI专访VG战队Fenrir:队伍气氛良好
2014/07/11 DOTA
天翼开放平台免费短信验证码接口使用实例
2013/12/18 Python
使用Django的模版来配合字符串翻译工作
2015/07/27 Python
Python使用logging结合decorator模式实现优化日志输出的方法
2016/04/16 Python
Python2.X/Python3.X中urllib库区别讲解
2017/12/19 Python
用tensorflow实现弹性网络回归算法
2018/01/09 Python
Python批量合并有合并单元格的Excel文件详解
2018/04/05 Python
python抖音表白程序源代码
2019/04/07 Python
浅析Python3中的对象垃圾收集机制
2019/06/06 Python
python实现接口并发测试脚本
2019/06/25 Python
Django ImageFiled上传照片并显示的方法
2019/07/28 Python
python3实现用turtle模块画一棵随机樱花树
2019/11/21 Python
Python数据持久化存储实现方法分析
2019/12/21 Python
详解Python 重学requests发起请求的基本方式
2020/02/07 Python
用python爬虫批量下载pdf的实现
2020/12/01 Python
html5实现九宫格抽奖可固定抽中某项奖品
2020/06/15 HTML / CSS
当当网官方旗舰店:中国图书销售夺金品牌
2018/04/02 全球购物
新西兰第一的行李箱网站:luggage.co.nz
2019/07/22 全球购物
英国奢侈品在线精品店:Hervia
2020/09/03 全球购物
2014年小学元旦活动方案
2014/02/12 职场文书
ubuntu下常用apt命令介绍
2022/06/05 Servers