AMD 模块
AMD(异步模块定义,Asynchronous Module Definition)格式总体的目标是为现在的开发者提供一个可用的模块化 JavaScript 的解决方案。
AMD 模块格式本身是一个关于如何定义模块的提案,在这种定义下模块和依赖项都能够异步地进行加载。它有很多独特的优势,包括天生的异步及高度灵活等特性,这些特性能够解除常见的代码与模块标识间的那种紧密耦合。目前它已经被很多项目所接纳,包括jQuery(1.7)。
AMD对于require方法的要求比define低,组件加载器可以随意发挥,只要保证能正常工作即可。比如requirejs的require方法就可以一次要求多个组件,而根据CommonJS规范的组件加载器一次只能要求一个组件。
RequireJSRequireJS是一个工具库,主要用于客户端的模块管理。它可以让客户端的代码分成一个个模块,实现异步或动态加载,从而提高代码的性能和可维护性。它的模块管理遵守AMD规范。
注意:AMD通过define方法声明模块,CommonJS是没有define方法的,所以AMD和CommonJS是两回事。但是,根据define的第二个参数的要求,可以看出,AMD的组件同样可以有require、exports、module这三个变量,因此,把CommonJS组件的代码拷贝到define方法中,大部分代码不用修改就可以用的,这点还是比较方便。