webpack是个模块打包工具,它获取有依赖关系的模块并生成表示这些模块的静态资源
为什么有webpack打包系统
现有的模块打包系统不适合大型的项目(单页面应用),最迫切的原因是因为代码拆分和静态资源
更好的接入模块化,对现有的模块化系统进行扩展,但是无法同时完成以下的所有目标
- 拆分依赖树,使之成为按需加载
- 让初始化加载时间更短
- 每一个静态资源都是一个模块
- 让第三方库成为模块
- 尽可能的去定义模块的每一部分
- 适用于大型项目
webpack有什么不同
webpack有同步与异步两种依赖方式,异步依赖在代码优化之后将会行程一个新的块。
加载器
webpack本身只支持处理javascript,但是加载器可以将其它的资源加载到javascript中去,这样做
每一个资源都是一个模块
智能解析
webpack有一个聪明的解析器可以处理几乎所有的第三方库,它甚至允许带有表达式的依赖,require("./templates/" + name + ".jade")
支持最常用的模块化方式CommonJS和AMD
插件系统
webpack以丰富的插件系统为特色,大多数的特色都是基于这个插件系统的,这允许你根据需要定义webpack
并且以开源的方式来发布通用插件。