压缩Vue.js打包后的体积方法总结(Vue.js打包后体积过大问题)


Posted in Javascript onFebruary 03, 2020

问题

由于这次项目是在初学 Vue 之后的第一个正式项目,没有考虑到类似 路由懒加载、 按需加载的问题 ,所以呢,也算是没经验。

到了这些天,项目写得差不多了,准备放到服务器测试,才发现这个问题。

优化前:

app.js    2.3MB
vendor.js   2.4MB
vendor.css  612kB
app.js.map  9.13MB
vendor.js.map 16.21MB
//不一一列举....

优化

接下来看看优化方法。

优化步骤1: 不生成.map文件

在 webpack.prod.cong.js 文件下,修改配置项 sourceMap 设置为 false 或者删除:

new webpack.optimize.UglifyJsPlugin({
  compress: {
    warnings: false
  },
  // sourceMap: true //将sourceMap关闭就不会打包出.map文件
}),

这样的话,开发环境就不会生成 .map 文件。

优化步骤2: 按需加载

对于项目中,一些 通用 或者 不是特别差异 的组件可以使用按需加载,在需要的时候加载即可,并且会自动缓存。

这时候需要在 router 文件夹下的 index.js 文件修改路由配置中的 组件引入 方式:

Vue.use(Router)
export default new Router({
  routes:[{
    path:"/",
    component:function(resolve){
      require(["./../components/Index"],resolve)
    }
  }]
})

这样的话,这个组件就会在你需要加载的时候才会加载。

优化步骤3: VueRouter的懒加载

官方文档

在 vue-router 的模块引入,将默认的 import .. from .. 引入方式,修改为一步。如下:

const Foo = () => import("/Foo.vue)
```

然后在 `配置路由` 中,和之前一样使用:

Vue.use(Router)
export default new Router({
routes:[{
path:”/“,
component:Foo
}]
})

优化步骤4:将大的第三方包通过<script>标签引入

一般将类似 `echarts` 这种比较大的第三方依赖包,通过 `<script></script>` 标签来引入的话,会很大程度缩小打包的大小。   

但是需要在 `vue` 配置文件这样配置:

`webpack.base.config.js` 中添加 `不打包` 的包的名称,这样打包的时候才不会把这些包一起打包进去:  

module.exports = {
  entry:{...},
  output:{...},
  resolve:{...},
  module:{...},
  externals:{
    "echarts":"echarts" //不打包的包名
  }
}

然后在 index.html 中用 <script></script> 标签引入依赖包的CDN或者其他地址。

优化步骤5: 图片压缩

这个不用怎么说,有个地址很好用,推荐下:tinypng

优化后

通过这几步骤,优化完成的每个文件都会缩小好多倍:

app.js    136.2kB
vendor.js   213.2kB
vendor.css  612kB  //css 这个我还没办法
app.js.map  0MB
vendor.js.map 0MB

更多关于VUE压缩的方案大家可以看看下面的相关文章

Javascript 相关文章推荐
关于setInterval、setTimeout在jQuery中的使用注意事项
Sep 28 Javascript
Javascript中的方法链(Method Chaining)介绍
Mar 15 Javascript
HTML5+setCutomValidity()函数验证表单实例分享
Apr 24 Javascript
bootstrap 下拉多选框进行多选传值问题代码分析
Feb 14 Javascript
angularjs点击图片放大实现上传图片预览
Feb 24 Javascript
5分钟打造简易高效的webpack常用配置
Jul 04 Javascript
浅谈es6语法 (Proxy和Reflect的对比)
Oct 24 Javascript
vue中引用swiper轮播插件的教程详解
Aug 16 Javascript
解决vue 界面在苹果手机上滑动点击事件等卡顿问题
Nov 27 Javascript
JavaScript中BOM对象原理与用法分析
Jul 09 Javascript
Vue.js中provide/inject实现响应式数据更新的方法示例
Oct 16 Javascript
Node.js API详解之 net模块实例分析
May 18 Javascript
24个解决实际问题的ES6代码片段(小结)
Feb 02 #Javascript
浅谈vuex为什么不建议在action中修改state
Feb 02 #Javascript
vuex+axios+element-ui实现页面请求loading操作示例
Feb 02 #Javascript
vue实现的封装全局filter并统一管理操作示例
Feb 02 #Javascript
node 版本切换的实现
Feb 02 #Javascript
vue路由缓存的几种实现方式小结
Feb 02 #Javascript
vue简单封装axios插件和接口的统一管理操作示例
Feb 02 #Javascript
You might like
DedeCMS dede_channeltype表字段注释
2010/04/07 PHP
PHP 微信支付类 demo
2015/11/30 PHP
php使用QueryList轻松采集js动态渲染页面方法
2018/09/11 PHP
js验证表单第二部分
2006/11/25 Javascript
页面中body onload 和 window.onload 冲突的问题的解决
2009/07/01 Javascript
js实现双向链表互联网机顶盒实战应用实现
2011/10/28 Javascript
JavaScript通过正则表达式实现表单验证电话号码
2014/03/07 Javascript
javascript获取隐藏元素(display:none)的高度和宽度的方法
2014/06/06 Javascript
两种方法实现在HTML页面加载完毕后运行某个js
2014/06/16 Javascript
jQuery实现统计复选框选中数量
2014/11/24 Javascript
在jQuery中处理XML数据的大致方法
2015/08/14 Javascript
纯javascript判断查询日期是否为有效日期
2015/08/24 Javascript
jQuery下拉友情链接美化效果代码分享
2015/08/26 Javascript
javascript实现网站加入收藏功能
2015/12/16 Javascript
jquery实现点击其他区域时隐藏下拉div和遮罩层的方法
2015/12/23 Javascript
基于Jquery插件实现跨域异步上传文件功能
2016/04/26 Javascript
Bootstrap 布局组件(全)
2016/07/18 Javascript
Node.js  REPL (交互式解释器)实例详解
2017/08/06 Javascript
详解webpack的配置文件entry与output
2017/08/21 Javascript
JS运动特效之完美运动框架实例分析
2018/01/24 Javascript
JavaScript文本特效实例小结【3个示例】
2018/12/22 Javascript
详解vue移动端项目代码拆分记录
2019/03/15 Javascript
Vue项目使用localStorage+Vuex保存用户登录信息
2019/05/27 Javascript
vue实现路由懒加载的3种方法示例
2020/09/01 Javascript
在vue中使用image-webpack-loader实例
2020/11/12 Javascript
Flask SQLAlchemy一对一,一对多的使用方法实践
2013/02/10 Python
Django中几种重定向方法
2015/04/28 Python
一些Python中的二维数组的操作方法
2015/05/02 Python
Python SQLAlchemy入门教程(基本用法)
2019/11/11 Python
Python selenium文件上传下载功能代码实例
2020/04/13 Python
python中pivot()函数基础知识点
2021/01/03 Python
UGG澳洲官网:UGG Australia
2018/04/26 全球购物
马来西亚网上花店:FlowerAdvisor马来西亚
2020/01/03 全球购物
办公用品管理制度
2015/08/04 职场文书
2016年教师学习廉政准则心得体会
2016/01/20 职场文书
MySQL数据库查询之多表查询总结
2022/08/05 MySQL