zoukankan      html  css  js  c++  java
  • 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的值),应该为设置为模块的输出值。

  • 相关阅读:
    搞破坏(手动滑稽),如何写出让同事无法维护的代码?
    我们公司是如何把项目中的2100个if-else彻底干掉的
    为什么阿里规定需在事务注解@Transactional中指定rollbackFor?
    算法导论 10.2-7
    算法导论 10.2-3
    算法导论 10.2-2
    算法导论 10.1-7
    算法导论 10.1-6
    算法导论 2.3-7
    算法导论 2.3-5 二分查找
  • 原文地址:https://www.cnblogs.com/branches/p/4869605.html
Copyright © 2011-2022 走看看