AMD 与 RequireJS
AMD
Asynchronous Module Definition,用白话文讲就是 异步模块定义,对于 JSer 来说,异步是再也熟悉不过的词了,所有的模块将被异步加载,模块加载不影响后面语句运行。所有依赖某些模块的语句均放置在回调函数中。
AMD规范定义了一个自由变量或者说是全局变量 define 的函数。
define( id?, dependencies?, factory );
第一个参数 id 为字符串类型,表示了模块标识,为可选参数。若不存在则模块标识应该默认定义为在加载器中被请求脚本的标识。如果存在,那么模块标识必须为顶层的或者一个绝对的标识。
第二个参数,dependencies ,是一个当前模块依赖的,已被模块定义的模块标识的数组字面量。
第三个参数,factory,是一个需要进行实例化的函数或者一个对象。
创建模块标识为 alpha 的模块,依赖于 require, export,和标识为 beta 的模块
一个返回对象字面量的异步模块
无依赖模块可以直接使用对象字面量来定义
类似与 CommonJS 方式定义
require();
在 AMD 规范中的 require 函数与一般的 CommonJS中的 require 不同。由于动态检测依赖关系使加载异步,对于基于回调的 require 需求强烈。
局部 与 全局 的require
局部的 require 需要在AMD模式中的 define 工厂函数中传入 require。
局部的 require 需要其他特定的 API 来实现。
全局的 require 函