贴一下之前vue脚手架的webpack3配置:

app.js是入口js,vendor则是通过提取公共模块插件来提取的代码块(webpack本身带的模块化代码部分),而manifest则是在vendor的基础上,再抽取出要经常变动的部分,比如关于异步加载js模块部分的内容。

从截图上看也看出,vendor的文件大小最大,因为其包含了vue整一个框架的代码,以及webpack的模块化代码。

至于manifest的话,主要是一些异步加载的实现方法(通过建立script方式动态引入js),内容上包含异步js的文件名和路径

1,CommonsChunkPlugin 抽取的是公共部分而不是"经常变动的部分";

2,观察了一下,webpack应该是会在最后一个CommonsChunkPlugin产出的chunk注入webpackJsonp的定义,以及异步加载相关的定义,而就是这个会涉及到所有entry及chunk的md5,所以会"经常变动",同时vue-cli默认的vendor是打包node_module下的所有依赖,会很大,在生产环境,过大的文件要尽量利用缓存来加快载入速度,但“经常变动”不利于缓存,所以为了将entry(这里可认为是app.js)的变动隔离在vendor之外,vue-cli在vendor之后多做了一个manifest的chunk,这样entry只要不引入新的node_modules里的包就不会影响到vendor了.

ps:所以其实跟编译次数没什么关系,所有文件每次打包都会再编译一次的,重点是大文件,缓存,变动代码的拆分.

以下说明仅依照vue-cli全家桶默认配置解读,如有错误,请指出:

app.js:基本就是你实际编写的那个app.vue(.vue或.js?),没这个页面跑不起来.

vendor.js:vue-cli全家桶默认配置里面这个chunk就是将所有从node_modules/里require(import)的依赖都打包到这里,所以这个就是所有node_modules/下的被require(import)的js文件

manifest.js: 最后一个chunk,被注入了webpackJsonp的定义及异步加载相关的定义(webpack调用CommonsChunkPlugin处理后模块管理的核心,因为是核心,所以要第一个进行加载,不然会报错).

精简:

由于默认的vendor的打包策略导致这个chunk很大,按照默认配置这基本没什么好精简了,要精简的话基本要针对项目实际来修改各个chunk的打包策略(尽量减少包的大小来提速首屏加载)

优化:

单页面基本就跟精简同个道理吧,多页面的话感觉还是自定义一下vendor的打包策略,毕竟不一定所有页面都会用到全量的第三方依赖,适当减少vendor的体积能提高不少加载速度.

mark: webpack.optimize.CommonsChunkPlugin 在webpack3已经被弃用,webpack4需要使用新的配置 config.optimization.splitChunks

最新文章

  1. Java 判断时间是否在指定天数之内
  2. C3P0数据源的使用
  3. hduoj 1285 确定比赛名次
  4. Sqlte数据库
  5. WCF入门教程二[WCF应用的通信过程]
  6. MongoDB sharding cluster Step by Step
  7. cocos2d-x编程的一些小技巧
  8. linux 内核 编绎配制选项详解
  9. 《NET 设计规范》第 2 章 框架设计基础
  10. [前端]css前端样式的模块化
  11. Elasticsearch 通关教程(二): 索引映射Mapping问题
  12. (转)jira7.2安装、中文及破解
  13. iOS----------关于UDID和UUID的一些理解
  14. kylin对接hive实现实时查询
  15. fixed、absolute
  16. MTK 修改默认屏幕亮度
  17. Linux 如何测试 IO 性能(磁盘读写速度)
  18. vue实现文章内容过长点击阅读全文功能
  19. java web Servlet开发(一)
  20. PHP之implode()方法

热门文章

  1. 手把手教你在Mac中搭建iOS的 React Native环境
  2. Hibernate 自动创建表bug问题解决
  3. 解决NTFS文件系统下的文件/文件夹属性中没有安全选项卡的问题
  4. python 小练习('''产生了多少个对象''')('''模拟两个英雄,昵称,攻击力,生命值''')
  5. laravel5.8的使用
  6. PIE SDK与OpenCV结合说明文档
  7. 07-oracle多表查询
  8. 3dsmax2013卸载/安装失败/如何彻底卸载清除干净3dsmax2013注册表和文件的方法
  9. 如何去除内联元素(inline-block元素)之间的间距
  10. 关于null的操作