- 1、本文档共17页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
JavaSript模块规范—AMD规范与CMD规范介绍
PAGE \* MERGEFORMAT17
JavaSript模块化
????在了解AMD,CMD规范前,还是需要先来简单地了解下什么是模块化,模块化开发?
????模块化是指在解决某一个复杂问题或者一系列的杂糅问题时,依照一种分类的思维把问题进行系统性的分解以之处理。模块化是一种处理复杂系统分解为代码结构更合理,可维护性更高的可管理的模块的方式。可以想象一个巨大的系统代码,被整合优化分割成逻辑性很强的模块时,对于软件是一种何等意义的存在。对于软件行业来说:解耦软件系统的复杂性,使得不管多么大的系统,也可以将管理,开发,维护变得“有理可循”。
????还有一些对于模块化一些专业的定义为:模块化是软件系统的属性,这个系统被分解为一组高内聚,低耦合的模块。那么在理想状态下我们只需要完成自己部分的核心业务逻辑代码,其他方面的依赖可以通过直接加载被人已经写好模块进行使用即可。
首先,既然是模块化设计,那么作为一个模块化系统所必须的能力:
????1. 定义封装的模块。
????2. 定义新模块对其他模块的依赖。
????3. 可对其他模块的引入支持。
????好了,思想有了,那么总要有点什么来建立一个模块化的规范制度吧,不然各式各样的模块加载方式只会将局搅得更为混乱。那么在JavaScript中出现了一些非传统模块开发方式的规范 CommonJS的模块规范,AMD(Asynchronous Module Definition),CMD(Common Module Definition)等。
AMD 与 RequireJS
AMD
????Asynchronous Module Definition,用白话文讲就是 异步模块定义,对于 JSer 来说,异步是再也熟悉不过的词了,所有的模块将被异步加载,模块加载不影响后面语句运行。所有依赖某些模块的语句均放置在回调函数中。
????AMD规范定义了一个自由变量或者说是全局变量 define 的函数。
????define( id?, dependencies?, factory );????
? ? AMD规范?? HYPERLINK /amdjs/amdjs-api/wiki/AMD /amdjs/amdjs-api/wiki/AMD
????第一个参数 id 为字符串类型,表示了模块标识,为可选参数。若不存在则模块标识应该默认定义为在加载器中被请求脚本的标识。如果存在,那么模块标识必须为顶层的或者一个绝对的标识。
????第二个参数,dependencies ,是一个当前模块依赖的,已被模块定义的模块标识的数组字面量。
????第三个参数,factory,是一个需要进行实例化的函数或者一个对象。
????创建模块标识为 alpha 的模块,依赖于 require, export,和标识为 beta 的模块 ?
define(alpha,?[?require,?exports,?beta?],?function(?require,?exports,?beta?){
????export.verb?=?function(){
????????return?beta.verb();
????????// or:
????????return?require(beta).verb();
????}
});
????一个返回对象字面量的异步模块
define([alpha],?function(?alpha?){
????return?{
????????verb?:?function(){
????????????return?alpha.verb()?+?1?;
????????}
????}
});
????无依赖模块可以直接使用对象字面量来定义
define(?{
????add?:?function(?x,?y?){
????????return?x?+?y?;
????}
}?);
????类似与 CommonJS 方式定义
define(?function(?require,?exports,?module){
????var?a?=?require(a),
??????????b?=?require(b);
????exports.action?=?function(){};
}?);
????require(); ?
? ? require API 介绍? HYPERLINK /amdjs/amdjs-api/wiki/require /amdjs/amdjs-api/wiki/require
????在 AMD 规范中的 require 函数与一般的 CommonJS中的 require 不同。由于动态检测依赖关系使加载
文档评论(0)