AMD是"Asynchronous Module Definition"的缩写,意思就是"异步模块定义"。它采用异步方式加载模块,模块的加载不影响它后面语句的运行。所有依赖这个模块的语句,都定义在一个回调函数中,等到加载完成之后,这个回调函数才会运行。
require([module], callback);
在CommonJS中,有一个全局性方法require(),用于加载模块。假定有一个数学模块math.js,就可以像下面这样加载。
var math = require(‘math‘);
在define下也有所不同
// CMD
define(function(require, exports, module) {
var a = require(‘./a‘)
a.doSomething()
// 此处略去 100 行
var b = require(‘./b‘) // 依赖可以就近书写
b.doSomething()
// ...
})
// AMD 默认推荐的是
define([‘./a‘, ‘./b‘], function(a, b) { // 依赖必须一开始就写好
a.doSomething()
// 此处略去 100 行
b.doSomething()
...
})
说道正题。。
先去官网下载require.js放到网页底部加载,加载一个main.js
<script type="text/javascript" src="require.js" defer async="true" data-main="main"></script>
main.js下面放
require([‘math‘], function (math){
alert(math.add(1,1));
});
math.js下面放
define(function (){
var add = function (x,y){
return x+y;
};
return {
add: add
};
});
本文参考
作者:玉伯
链接:https://www.zhihu.com/question/20351507/answer/14859415
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处
和阮一峰的require.jshttp://www.ruanyifeng.com/blog/2012/10/asynchronous_module_definition.html
原文:http://www.cnblogs.com/yanwei-sun/p/5255597.html