2

webpack是一个打包工具。

web pack读取这些有依赖关系的模块并产生一个用来表示这些模块的静态资源。
图片描述

产生的意义?

市面上的模块打包工具对大型应用(大型单页面应用)并不十分合适。因此急需开发出一款可以通过模块化将代码拆分与静态资源生成无缝结合在一起的工具。
曾尝试从现有工具扩展,但实难达到所有目标。

需要达到的目标:

  • 将依赖树拆分成块并按需加载

  • 短的初始化加载时间

  • 每个静态资源都能视作模块

  • 引入第三方库作为模块的能力

  • 自定义打包工具的能力

  • 适应大型项目

为何web pack与众不同

代码拆分

webpack的依赖树中有同步与异步两种类型。异步依赖行为将作为拆分点并生成一个新的区块(chunk)。在区块(chunk)树优化好后,文件将被分发到每一个区块(chunk)中去。

详见代码拆分

Loaders

webpack只处理JavaScript所以loaders被用来处理将各类资源转换成JavaScript。由此所有的资源都能作为模块。

详细阅读使用loadersloaders

智能分析

web pack 拥有的智能分析系统可以处理几乎所有的第三方库。甚至允许在依赖中使用形如 require("./templates/" + name + ".jade")的写法。智能分析系统可以处理大多数常见的模块格式如: CommonJs 与 AMD。

阅读更多关于依赖中的表达式CommonJsAMD

插件系统

webpack 附带一个强大的插件(plugin)系统。绝大多数特性都基于该插件系统。它能让你依据自身需求去定义web pack 还能发布开源插件。

详情请见插件系统


这是上帝的杰作
2.2k 声望164 粉丝

//loading...