Open weijiyang opened 4 years ago
AMD(异步模块定义)是require.js推广之后的规范产出 主要是针对与浏览器 异步加载模块方案 推崇依赖优先加载
define('module1', ['jquery'], ($) => { //do something... }); //代码中依赖被前置,当定义模块(module1)时,就会加载依赖(jquery)
CMD (公共模块定义)是sea.js推广之后的规范产出 对于模块的依赖CMD延迟执行 推崇依赖就近
define((require, exports, module) => { module.exports = { fun1: () => { var $ = require('jquery'); return $('#test'); } }; }); // 如上代码,只有当真正执行到fun1方法时,才回去执行jquery。 //同时CMD也是延自CommonJS Modules/2.0规范
UMD(通用模块定义)是AMD和CommonJS的一个糅合。AMD是浏览器优先,异步加载;CommonJS是服务器优先,同步加载
((root, factory) => { if (typeof define === 'function' && define.amd) { //AMD define(['jquery'], factory); } else if (typeof exports === 'object') { //CommonJS var $ = requie('jquery'); module.exports = factory($); } else { //都不是,浏览器全局定义 root.testModule = factory(root.jQuery); } })(this, ($) => { //do something... 这里是真正的函数体 });
认识AMD CMD UMD COMMONJS