Back

AMD: asynchronize module definition: 一种异步的 javascript的加载方式。

发布时间: 2016-01-17 00:40:00

refer to:  http://requirejs.org/docs/whyamd.html

https://github.com/amdjs/amdjs-api/wiki/require-(%E4%B8%AD%E6%96%87%E7%89%88)

目前国内比较常见的是 requirejs 使用的 require 方法。

这里介绍的就是第二种:AMD加载模块的方式,一种异步的加载js文件的方式。

好处有:

1. 异步加载文件,不会因为顺序/同步加载而产生问题

2. 不需要依赖顺序。

例如:

我们在使用 jquery-ui 之前,必须先引用: jquery: 

<script>http://...jquery.js</script>
<script>http://...jquery-ui.js</script>

如果把 jquery-ui 放到 jquery的声明前面,这个页面就会出错。 因为jquery-ui是对jquery 依赖的。

如果使用了 AMD , 方式, 就没有这个,你把声明写到哪里都是无所谓的。前面后面都行。跟coffeescript 一样,它会帮你在最前面把所有的第三方模块都做个声明, 然后后面的引用就不会报错。也就是加载慢一点儿而已。

// 定义一个 module
define(['jquery'],function($) {
  return function(){};
 })


// 定义多个module, 包含各种依赖关系:
define(['jquery', 'jquery-ui'], function($, 'jquery-ui'){ 
  return function(){};
});

Back