Webpack是什么?
Webpack是一个模块打包的工具,它的作用是把互相依赖的模块处理成静态资源。
为什么又来一个新的模块打包工具?
现有的模块打包工具不适合大型项目(大型的SPA)的开发。当然最重要的还是因为缺少代码分割功能,以及静态资源需要通过模块化来无缝衔接。Webpack的作者曾经试图对原有的打包工具进行扩展,但是没能成功。 Webpack的目标:
- 把依赖树按需分割
- 把初始加载时间控制在较低的水平
- 每个静态资源都应该能成为一个模块
- 能把第三方库继承到项目里来成为一个模块
- 能定制模块打包器的每个部分
- 能适用于大型项目
Webpack有哪些特别的地方?
代码分割
在Webpack的依赖树里有两种类型的依赖:同步依赖和异步依赖。异步依赖会成为一个代码分割点,并且组成一个新的代码块。在代码块组成的树被优化之后,每个代码块都会在一个单独的文件里。
更多关于code spliting的信息。
加载器
Webpack原生是只能处理JavaScript的,而加载器的作用把其它的代码转换成JavaScript代码,这样一来所有种类的代码都能组成一个模块。
更多关于loaders的信息。
智能解析
Webpack的智能解析器能处理几乎所有的第三方库,它甚至允许依赖里出现这样的表达式:
require("./templates/"+ name + ".jade")
它能处理大多数的模块系统,比如说CommonJS和AMD.
插件系统
Webpack有丰富的插件系统,大多数内部的功能都是基于这个插件系统。这也使得我们可以定制Webpack,把它打造成能满足我们的需求的工具,并且把自己做的插件开源出去。