文档章节

Asynchronous Module Definition (AMD)

learn_more
 learn_more
发布于 2015/09/19 11:51
字数 432
阅读 180
收藏 3


1、AMD

AMD 规范全称是 Asynchronous Module Definition,即异步模块加载机制。AMD很短也很简单,但它却完整描述了模块的定义,依赖关系,引用关系以及加载机制。

关键是它采用异步方式加载模块,模块的加载不影响它后面语句的运行。所有依赖这个模块的语句,都定义在一个回调函数中,等到加载完成之后,这个回调函数才会运行。


2、AMD实现

目前,主要有两个Javascript库实现了AMD规范:require.js 和 curl.js ;



3、AMD 相关

CommonJS中,有一个全局性方法require(),用于加载模块,根据格式规范加载之后便能使用,

var add = require('math').add;exports.increment=function(val){return add(val,1);};

CommonJs 是服务器端模块的规范,Node.js采用了这个规范。

根据CommonJS规范,一个单独的文件就是一个模块。加载模块使用require方法,该方法读取一个文件并执行,最后返回文件内部的exports对象。 

CommonJS 加载模块是同步的,所以只有加载完成才能执行后面的操作。像Node.js主要用于服务器的编程,加载的模块文件一般都已经存在本地硬盘,所以加载起来比较快,不用考虑异步加载的方式,所以CommonJS规范比较适用。但如果是浏览器环境,要从服务器加载模块,这是就必须采用异步模式。所以就有了 AMD 解决方案。 









© 著作权归作者所有

learn_more
粉丝 93
博文 240
码字总数 210196
作品 0
深圳
程序员
私信 提问
两步实现将jquery作为Dojo的一个模块使用

jquery和dojo都需要1.7.x及以上版本,因为要支持Asynchronous Module Definition (AMD) API才行。 第一步: <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/do......

javasql
2012/11/27
1K
1
rquirejs

requirejs 实现了AMD规范 语法: require([module], callback); 解释: AMD是"Asynchronous Module Definition"的缩写,意思就是"异步模块定义 //翻译字段 通行的Javascript模块规范共有两种......

james_lz
2016/10/21
56
0
JS每日一题: 说说你对前端模块化的理解

20190114问: 说说你对前端模块化的理解 模块的定义: 可以理解成实现特定功能的相互独立的一组方法 为什么要使用模块化: 可维护性 命名空间 可复用性 模块化规范 CommonJS AMD UMD CMD Modul...

JS每日一题
01/23
0
0
RequireJS与SeaJS模块化加载示例

web应用越变的庞大,模块化越显得重要,尤其Nodejs的流行,Javascript不限用于浏览器,还用于后台或其他场景时,没有Class,没有Package的Javascript语言变得难以管理,于是出现CommonJS项目...

nosand
2014/05/04
4.2K
10
CommonJS 和 AMD 规范?

什么是CommonJS? CommonJS 是javascript模块化编程的一种规范,主要是在服务器端模块化的规范,一个单独的文件就是一个模块。每一个模块都是一个单独的作用域,也就是说,在该模块内部定义的...

w-rain
2015/02/05
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

前端技术之:Prisma Demo服务部署过程记录

安装前提条件: 1、已经安装了docker运行环境 2、以下命令执行记录发生在MackBook环境 3、已经安装了PostgreSQL(我使用的是11版本) 4、Node开发运行环境可以正常工作 首先需要通过Node包管...

popgis
今天
5
0
数组和链表

数组 链表 技巧一:掌握链表,想轻松写出正确的链表代码,需要理解指针获引用的含义: 对指针的理解,记住下面的这句话就可以了: 将某个变量赋值给指针,实际上就是将这个变量的地址赋值给指...

code-ortaerc
今天
4
0
栈-链式(c/c++实现)

上次说“栈是在线性表演变而来的,线性表很自由,想往哪里插数据就往哪里插数据,想删哪数据就删哪数据...。但给线性表一些限制呢,就没那么自由了,把线性表的三边封起来就变成了栈,栈只能...

白客C
今天
42
0
Mybatis Plus service

/** * @author beth * @data 2019-10-20 23:34 */@RunWith(SpringRunner.class)@SpringBootTestpublic class ServiceTest { @Autowired private IUserInfoService iUserInfoS......

一个yuanbeth
今天
5
0
php7-internal 7 zval的操作

## 7.7 zval的操作 扩展中经常会用到各种类型的zval,PHP提供了很多宏用于不同类型zval的操作,尽管我们也可以自己操作zval,但这并不是一个好习惯,因为zval有很多其它用途的标识,如果自己...

冻结not
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部