require
方法,该方法读取一个文件并执行,最后返回该文件内部的 exports
对象。像
Node.js
主要用于服务器的编程,加载的模块文件通常都已经存在本地硬盘,因此加载起来比较快,不用考虑异步加载的方式,因此CommonJS
规范比较适用。但若是是浏览器环境,要从服务器加载模块,这是就必须采用异步模式。因此就有了AMD
和CMD
解决方案。html
define
,它是全局变量。define.amd
是听从 AMD
规范的一个特殊标识符,它的值为一个对象。define
,它是全局变量。define.cmd
是听从 CMD
规范的一个特殊标识符,它的值为一个对象。if (typeof define === "function" && define.cmd) {
// 有 Sea.js 等 CMD 模块加载器存在
}
复制代码
UMD
是但愿解决跨平台的解决方案。前端
UMD
是 AMD
和 Common JS
的糅合。AMD
以浏览器第一的原则发展,异步加载模块。Common JS
以服务器第一原则发展,选择同步加载,它的模块无需包装。UMD
先判断是否支持 Node.js
的模块( exports ) 是否存在,存在则使用 Node.js
模块模式。而后再判断是否支持 AMD
( define 是否存在 ),存在则使用 AMD
方式加载模块。(function(window, factory){
if(typeof exports === 'object'){
// Common JS
module.exports = factory();
}else if(typeof define === 'function' && defined.amd){
// AMD 方式
define(factory);
}else{
window.eventUtil = factory();
}
})(this, function(){
// module ...
})
复制代码