AMD规范

AMD

AMD(Asynchronous Module Definition) API 制定了定义模块的规范,这个模块和它要依赖的能异步加载的。这和浏览器的异步加载模块的坏境刚好适应,同步加载可能会导致性能,可用,调试,跨域问题

API 规范(Specification)
define() 函数

这个规范定义了唯一的 "define" 函数,它是全局变量。 关于这个函数描述:

define(id?, dependencies?, factory);

id

第一个参数是一个字面量。它指定了模块的名称。这个参数是可选的,如果没有指定,那么模块的id就是

加载的脚本的名字。当传了参数,模块id必须是"最顶级"或者绝对的。

模块名字格式化

模块名用来唯一标识定义的模块,他们同样可以在依赖数组中使用。AMD的模块名规范是CommonJS模块名规范的超集。

 1,模块名是由一个或多个单词以正斜杠为分隔符拼接成的字符串

2,单词须为驼峰形式,或者".",".."

3,模块标识不允许文件扩展名的形式,如".js"

4,模块名可以为 "相对的" 或 "顶级的"。如果首字符为"."或".."则为"相对的"模块名

5,顶级的模块名从根命名空间的慨念模块解析

6,相对的模块名从 "require" 书写和调用的模块解析

 相对模块id实例:

1,如果模块 "a/b/c" 请求的是 "../d", 那它找到的就是 "a/d"

2,如果模块 "a/b/c" 请求的是 "./e", 那它找到就是 "a/b/e"

依赖

第二个参数,dependencies,是个定义中模块所依赖模块的数组。

工厂方法

第三个参数,factory,为模块初始化要执行的函数或对象。如果为函数,它应该只被执行一次。如果是对象,此对象应该为模块的输出值。

如果工厂方法返回一个值(对象,函数,或任意强制类型转换为true的值),应该为设置为模块的输出值。

posted @ 2015-10-11 19:50  Olive_branch  阅读(304)  评论(0编辑  收藏  举报