之前学习过webpack3的知识,但是webpack4升级后还是有很多变动的,所以这次重新整理一下webpack4的知识点,方便以后复习。

这次学习webpack4不仅仅要会配置,记住核心API,最好还要理解一下webpack更深层次的知识,比如打包原理等等,所以可能会省略一些比较基础的内容,但是希望我可以通过此次学习掌握webpack,更好地应对以后的工作。

1.为什么要进行Code Splitting

我们先举一个例子,在index.js中引入lodash。

然后进行打包,我们会发现按照以前的配置,会把lodash和我们的业务代码打包到一起,这其实会有问题:

用户第一次进入页面,会加载main.js(假如是2MB),当业务逻辑发生变化,重新打包上线后,用户进入页面又要重新加载2MB的文件,就会造成浪费。lodash这个库在我们开发过程中,基本不会去改变里面的内容,所以应该把这部分代码单独生成一个js文件,这样业务逻辑变化就不会影响到lodash的代码了。

2.初步Code Splitting

我们新建一个lodash.js,然后在里面引入lodash,并且挂在到window上,然后index.js直接调用lodash的方法。

重新配置entry和output:

重新进行打包,会有两个JS文件。

在这种情况下,用户第一次进入页面,加载两个JS,业务逻辑发生变化重新打包后,lodash.js并不需要重新加载,节约了资源,也节省了一部分时间。

3.利用webpack做Code Splitting

首先重新引入lodash库

然后在webpack.config.js中添加配置项

进行打包,观察打包的文件,除了main.js,还多生成了一个vendor.js文件,我们观察main和vendor发现,main.js里面只有业务逻辑,而vendor里面只有lodash的代码。

使用这个配置项,webpack自动帮我们进行了代码分割。

4.动态引入库

新建一个js文件,增加如下代码。

但是现在webpack对动态引入处于实验性阶段,所以想要打包还要安装一个插件。

cnpm install babel-plugin-dynamic-import-webpack -D

在.babelrc中增加如下配置。

进行打包,打包后发现生成这些文件。

这时,lodash的代码都在0.js中,所以webpack不仅能分割同步引入的代码,还可以分割异步引入的代码。

转载于:https://juejin.im/post/5cd04e2ee51d45379a1642f5

复习webpack4之Code Splitting相关推荐

  1. 【翻译】基于 Create React App路由4.0的异步组件加载(Code Splitting)

    基于 Create React App路由4.0的异步组件加载 本文章是一个额外的篇章,它可以在你的React app中,帮助加快初始的加载组件时间.当然这个操作不是完全必要的,但如果你好奇的话,请随 ...

  2. react-router4 + webpack Code Splitting

    项目升级为react-router4后,就尝试着根据官方文档进行代码分割.https://reacttraining.com/react-router/web/guides/code-splittin ...

  3. 代码分割(Code Splitting)

    代码分割(Code Splitting) 为什么要分割代码?代码分割有什么作用呢? 答:两个方面. 1.项目包含第三方依赖库以及自己写的代码,打包出的文件会比较大,在用户访问系统的时候,由于请求的资源 ...

  4. 【Webpack 性能优化系列(6) - code splitting 】通过代码分割来获取更小的 bundle,优化资源加载

    webpack系列文章: [Webpack 性能优化系列(9) - 多进程打包]极大的提升项目打包构建速度!!! [Webpack 性能优化系列(8) - PWA]使用渐进式网络应用程序为我们的项目添 ...

  5. Webpack系列——代码分离(Code Splitting)

    代码分离(Code Splitting) // index.js import _ from 'lodash'; const ele = document.createElement('div'); ...

  6. Webpack和Code Splitting

    一.Webpack和Code Splitting之间的关系 Code Splitting指的是代码分割,什么是代码分割,代码分割和webpack有什么关系呢 CleanWebpackPlugin只能清 ...

  7. Webpack 大法之 Code Splitting

    今天,大家要学习的内容是 Webpack 大法中的 Code Splitting . Code Splitting 是什么以及为什么 在以前,为了减少 HTTP 请求,通常地,我们都会把所有的代码都打 ...

  8. webpack 和 code splitting

    Code Splitting指的是代码分割,那么什么是代码分割,webpack和code splitting又有什么样的联系呢? 使用npm run dev:"webpack-dev-ser ...

  9. Webpack的Code Splitting实现按需加载

    一. 什么是Code Splitting? 在最开始使用Webpack的时候, 都是将所有的js文件全部打包到一个build.js文件中(文件名取决与在webpack.config.js文件中outp ...

最新文章

  1. Java8内存模型—永久代(PermGen)和元空间(Metaspace)
  2. 宿主机( win 7 系统) ping 虚拟机VMware( cent os 6.6 ) 出现“请求超时”或者“无法访问目标主机”的解决方法
  3. 桌面图标有阴影怎么去掉
  4. 金钱vs职业道德,作为程序员你怎么选?
  5. c# url传参不能包含html标签,c#解析包含HTML特殊字符的字符串XElement
  6. python38moduledocs是什么_Python模块(Module)
  7. 哈希表实现电话号码查找系统
  8. Linux常用命令和Vi编辑器操作
  9. [V811双核] 最新昂达V811最新2.0固件ROOT方法
  10. STM8S103定时器1,定时器2多路PWM波输出
  11. Qt 5.9 mysql 驱动加载失败解决办法
  12. 树莓派外接显示器黑屏_树莓派4B连接显示器黑屏或者提示input not supported
  13. 符合W3C的网站的开发模型和必要性的探讨(一)
  14. MFC添加勾选控件check box
  15. php如何实现性格测试,一个很准的性格测试
  16. 物理像素,设备独立像素等等收录链接
  17. 解决该内存不能为read或written
  18. 产品上ref和lot是什么意思_产品上的LOT是什么意思?
  19. oracle异构迁移mysql方案实施(含原理)——已迁移成功
  20. scum服务器设置网站,SCUM服务器配置详解 参数设置推荐

热门文章

  1. PostgreSQL的高可用与数据复制方案
  2. 对比let、const、var的异同
  3. 输出多个重复字符或字符串
  4. PHP实现二维码扫码登录
  5. springmvc中的全注解模式
  6. Android启动流程
  7. 多选Select排序
  8. 剖析 | torch.nn.functional.softmax维度详解
  9. 不停刷朋友圈的人_不停刷新闻、朋友圈、微信群的朋友,休息一下,看多了伤身!...
  10. 如何分享文件_分布式文件存储系统如何分享文件