服务器端:commonjs
浏览器端:AMD("Asynchronous Module Definition"的缩写,意思就是"异步模块定义")
如下代码
var math = require(‘math‘); math.add(2, 3);必须等待math.js加载完成,否则会出现加载时间很长现象
define(id?, dependencies?, factory);
其中:
define(function() { return { mix: function(source, target) { } }; });ui.js
define([‘base‘], function(base) { return { show: function() { // todo with module base } } });page.js
define([‘data‘, ‘ui‘], function(data, ui) { // init here });data.js
define({ users: [], members: [] });
define(‘index‘, [‘data‘,‘base‘], function(data, base) { // todo });
define(function(require, exports, module) { var base = require(‘base‘); exports.show = function() { // todo with module base } });不考虑多了一层函数外,格式和Node.js是一样的:使用require获取依赖模块,使用exports导出API。
require([module],
callback);
第一个参数[module],是一个数组,里面的成员就是要加载的模块;第二个参数callback,则是加载成功之后的回调函数。如果将前面的代码改写成AMD形式,就是下面这样:
require([‘math‘], function (math) { math.add(2, 3); });
math.add()与math模块加载不是同步的,浏览器不会发生假死。所以很显然,AMD比较适合浏览器环境。
目前,主要有两个Javascript库实现了AMD规范:require.js和curl.js
javascript模块化编程(二)—AMD规范,布布扣,bubuko.com
原文:http://blog.csdn.net/cowlkkn/article/details/22677137