模块(Module)

模块化编程 中,开发人员将程序分解为称为模块的离散功能块。

每个模块的表面积小于完整程序,使验证、调试和测试变得无关重要。编写良好的模块提供了可靠的抽象和封装界限,因此整个应用程序中的每个模块都具有一致的设计和明确的目的。

Node.js 几乎从一开始就支持模块化编程。但是,针对 web 开发的模块化支持进展缓慢。已有的多种工具,支持 Web 上的模块化 JavaScript,具有各种优点和局限性。webpack 基于从这些系统中学到的经验教训的基础上,并将模块的概念应用于项目中的所有文件。

什么是 webpack 模块

与 Node.js 模块相比,webpack 模块能够以各种方式表达它们的依赖关系。比如:

  • ES2015 import 语句
  • CommonJS require() 语句
  • AMD define 和 require 语句
  • css/sass/less 文件内的 @import 语句。
  • 样式表 (url(...)) 或 html 文件(<img src=...>) 中的图像链接。

webpack 1 需要一个特定的加载器来转换 ES2015 import,而通过 webpack 2 可以开箱即用

支持的模块类型

webpack 通过加载器支持用各种语言和预处理器编写的模块。加载器向 webpack 描述如何处理非 JavaScript 模块并将这些依赖项包含到你的 bundle 中。 webpack 社区已经为各种流行语言和语言处理器构建了加载器,包括:

  • CoffeeScript
  • TypeScript
  • ESNext (Babel)
  • Sass
  • Less
  • Stylus

还有很多!总的来说,webpack 为定制化提供了功能强大且丰富的 API 接口,允许用户以任何技术栈使用 webpack,同时保持对开发、测试和生产工作流程的非浸入性。

有关完整列表,请参阅 加载器列表编写你自己的加载器

进一步阅读