CommonJS 和 AMD 规范?
1. 什么是CommonJS?
CommonJS 是javascript模块化编程的一种规范,主要是在服务器端模块化的规范,一个单独的文件就是一个模块。每一个模块都是一个单独的作用域,也就是说,在该模块内部定义的变量,无法被其他模块读取,除非定义为global对象的属性。
在CommonJS中有一个全局性方法require( ),用于加载模块。
//example.js
module.exports = function( ){ };
example.message = "hi";
//main.js
var example = require("./example");
CommonJS加载模块是同步的,只有加载完成,才能执行后面的操作,主要是由于服务端的编程模块文件都存在于本地硬盘,所以加载较快。
2. 什么是AMD 规范?
AMD是"Asynchronous Module Definition"的缩写,意思就是"异步模块定义"。异步方式加载模块,模块的加载不影响它后面语句的执行。所有依赖这个模块的语句,都定义到一个回调函数中,等到加载完成之后,这个回调函数才会运行。
AMD规范使用define方法定义模块:
define(["/libs/jquery"], function(jquery){
function log(){
alert("hello world!");
}
return {
log: log
}
});
当然AMD也允许输出模块兼容CommonJS规范:
define(function(require, exports, module){
var module = require("module");
module.doSometing( );
exports.do = function(){
module.doSometing( );
}
});