欢迎来到天天文库
浏览记录
ID:12963075
大小:32.73 KB
页数:16页
时间:2018-07-19
《javasript模块规范 - amd规范与cmd规范介绍》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、JavaSript模块化 在了解AMD,CMD规范前,还是需要先来简单地了解下什么是模块化,模块化开发? 模块化是指在解决某一个复杂问题或者一系列的杂糅问题时,依照一种分类的思维把问题进行系统性的分解以之处理。模块化是一种处理复杂系统分解为代码结构更合理,可维护性更高的可管理的模块的方式。可以想象一个巨大的系统代码,被整合优化分割成逻辑性很强的模块时,对于软件是一种何等意义的存在。对于软件行业来说:解耦软件系统的复杂性,使得不管多么大的系统,也可以将管理,开发,维护变得“有理可循”。 还有一些对于模块化一些专业的定义为:模块化是软件系统的属性,这个系统被分解为
2、一组高内聚,低耦合的模块。那么在理想状态下我们只需要完成自己部分的核心业务逻辑代码,其他方面的依赖可以通过直接加载被人已经写好模块进行使用即可。首先,既然是模块化设计,那么作为一个模块化系统所必须的能力: 1.定义封装的模块。 2.定义新模块对其他模块的依赖。 3.可对其他模块的引入支持。 好了,思想有了,那么总要有点什么来建立一个模块化的规范制度吧,不然各式各样的模块加载方式只会将局搅得更为混乱。那么在JavaScript中出现了一些非传统模块开发方16式的规范CommonJS的模块规范,AMD(AsynchronousModuleDefinition
3、),CMD(CommonModuleDefinition)等。AMD与RequireJSAMD AsynchronousModuleDefinition,用白话文讲就是异步模块定义,对于JSer来说,异步是再也熟悉不过的词了,所有的模块将被异步加载,模块加载不影响后面语句运行。所有依赖某些模块的语句均放置在回调函数中。 AMD规范定义了一个自由变量或者说是全局变量define的函数。 define(id?,dependencies?,factory); AMD规范 https://github.com/amdjs/amdjs-api/wiki/AM
4、D 第一个参数id为字符串类型,表示了模块标识,为可选参数。若不存在则模块标识应该默认定义为在加载器中被请求脚本的标识。如果存在,那么模块标识必须为顶层的或者一个绝对的标识。 第二个参数,dependencies,是一个当前模块依赖的,已被模块定义的模块标识的数组字面量。 第三个参数,factory,是一个需要进行实例化的函数或者一个对象。16 创建模块标识为alpha的模块,依赖于require,export,和标识为beta的模块 1.define("alpha", [ "require", "exports", "beta" ], function
5、( require, exports, beta ){2. export.verb = function(){3. return beta.verb();4. //or:5. return require("beta").verb();6. }7.}); 一个返回对象字面量的异步模块1.define(["alpha"], function( alpha ){2. return {3. verb : function(){4. return alpha.verb() + 1 ;5
6、. }6. }7.}); 无依赖模块可以直接使用对象字面量来定义1.define( {2. add : function( x, y ){3. return x + y ;4. }5.} );16 类似与CommonJS方式定义1.define( function( require, exports, module){2. var a = require('a'),3. b = require('b');4.5. exports.action = function(){};6.} );
7、 require(); requireAPI介绍 https://github.com/amdjs/amdjs-api/wiki/require 在AMD规范中的require函数与一般的CommonJS中的require不同。由于动态检测依赖关系使加载异步,对于基于回调的require需求强烈。 局部与全局的require 局部的require需要在AMD模式中的define工厂函数中传入require。1.define( ['require'], function(
此文档下载收益归作者所有