代码分离是什么
代码分离是一种技术,使得主文件被拆分为多个文件,同时保证分离后的代码对原有的功能没有影响。webpack也具备代码分离的能力。由于webpack的打包过程是自动化的,因此自然的通过webpack做代码分离后的文件之间的关系要么是自动关联的要么能很清晰看到分离文件之间的联系。
webpack中代码分离的方案分为三类:
-
多入口
webpack从一个入口出发对应一个输出的bundle.js,那么多个入口就将会有多个输出的bundle.js,虽然这些bundle.js之间不存在自动的关联关系,但是,在HTML文件中分别引入他们就能实现了引用关联。甚至可以使用HtmlWebpackPlugin插件,自动化生成引用由webpack打包生成的JavaScript文件的HTML文件。
- CommonsChunkPlugin
该插件可以用来分离引用的第三方库,将第三方库独立成为一个JavaScript文件,之后的操作如同多入口产生的多个bundle.js一样,或者在HTML文件中引用,或者由HtmlWebpackPlugin插件来生成这个包含引用的HTML文件。

上图的代码截图于https://github.com/webpack/webpack/releases 的v3.10.0版本中的/examples/multiple-entry-points/webpack.config.js。结合了多入口和CommonsChunkPlugin的使用,可以作为示例参考。
- 动态导入
上面两种方案有很大的局限性,首先要求代码可以分为多个入口否则多入口的方案没有意义,其次,使用CommonsChunkPlugin可以提取第三方库,但是却没有说明业务代码怎么做代码分离,因此,第三种方案动态导入要来解决业务代码中的代码分离问题。
webpack支持多种动态导入写法: