模块化开发:AMD、CMD、Webpack Module 和 ES6 Module

虽然现在再说 AMD,CMD 会显得 out-dated 了,但是为了学习,还是很有必要去了解的。

CommonJS

CommonJS 不是一个库,而是一个规范。

The CommonJS group defined a module format to solve JavaScript scope issues by making sure each module is executed in its own namespace.

规范要求提供一个 require() 函数, 把指定的模块引入到当前作用域中。另外 module 对象, 用于输出(export)当前作用域的内容。

// math.js
var add = function (a, b) {
  return a + b;
}
module.exports = add;

// index.js
var math = require('math');
math.add(2,3); // 5

Node 的模块系统就是遵循 CommonJS 设计的。以上这段代码在 Node 中运行没有大问题,因为 Node 服务器端,服务器端的模块都存储在本地硬盘中,引用模块只需要进行本地的 IO 操作。而在客户端(浏览器)跑这段代码就会出现问题,因为获取模块需要通过网络请求,这种同步的引用模块方法,有可能使浏览器一直处于等待的状态。

AMD

AMD (The Asynchronous Module Definition) 就可以解决上面提出的问题。

...to be done

Reference

COMMONJS Javascript模块化编程(二):AMD规范

« 返回