上一篇回忆运用 Webpack 的效果,比较理论,本篇着重有用。
这几篇文章的条件是 Webpack 已入门。若无,请自行到 Webpack 官方网站的 getting start 按指引一步步实操。
啃教师(MrKenniu) | 文
运用 Webpack 打包,前端工程师能够按 CommonJS 或 ES6 Module 的范例写前端 JS 代码,使模块源代码看起来跟后端代码一样简约,然则,很快发明文件太大(特别基于 React 举行开辟的运用,如果是单页面顺序?更大了),为了解决题目,以下是我每次必用的战略:
本篇总结 按需加载 的用法
Code Split 观点
Webpack 支撑多种模块加载体式格局。CommonJS 的 require 和 ES6 的 import 是同步加载的,经由过程这些体式格局引入的依靠会被 Webpack 打包在一起,文件因此变大。而 AMD 或 CommonJS 的 require.ensure 是按需加载「异步的」,关于一些能够耽误加载的模块「依靠」,应该用这类体式格局,从而防止文件太大。
同步加载的模块被打包在同一个 chunk 「 一个 chunk 是一个 JS 文件,由一个或若干个模块组成 」,而经由过程异步加载的模块被打包在别的的 chunk 里,Webpack 以此来举行分片,即 Code split。
Code Split 的体式格局
AMD : require
CommonJS : require.ensure
ES : System.import
chunk 的内容组成
经由过程 Code Split 分片,新的 chunk 由异步模块和这些模块的依靠组成。这些模块的依靠按一样的划定规矩构建,即同步加载的模块打包在同一个 chunk,异步加载的模块被切分到新的 chunk。详细看下面的例子,请注意看代码解释的内容,build 目次里的三个文件是 Webpack 打包终究天生的。
Code Split 优化
从上面的例子可见,Code Split 分出来了两个 chunk,即 1.bundle 和 2.bundle,从而减小了主 chunk bundle.js 的文件大小,减轻顺序初始化的收集守候。但是,新的题目涌现了,1.bundle 和 2.bundle 都包括 io 模块,可见 io 模块有冗余。带着这个题目,下一篇总结 CommonsChunkPlugin 的运用
迎接关注我的民众号