相信大家经常看到AMD、CMD、CommonJS、UMD和ES Module这几个js模块化名词,但是对这些名词都是一知半解,今天就跟大家梳理一下这些名词和对应的技术细节。之所以出现这些js模块化规范是因为早期的js语言是没有模块化体系的,开发者为了方便代码组织,逐渐形成AMD和CMD规范,后来出现了主要在nodejs中使用的CommonJS规范,这么多的规范出来后,为了代码复用,又提出了UMD规范来统一兼容AMD、CMD、CommonJS,随着js语言的发展,规范的制定者也意识到模块化的重要性,于是增加了ES Module。
- AMD
define(['jquery'], function(jquery){
// 此为工厂函数
function myFunc(){
// 依赖 jquery
};
// 暴露公共方法
return myFunc;
})
RequireJS就是AMD的一个典型的实现, 依赖前置,多文件并行加载。
2. CMD
define(function(require, exports, module) {
var jquery = require('./jquery'); // 就近书写依赖