理解CommonJS ,AMD ,CMD,UMD 模块规范

参考 : https://blog.csdn.net/xcymorningsun/article/details/52709608

1、CommonJS 模块规范 (同步加载模块):

 var math = require('math');    // 其中 math 是模块实例
 math.add(2,3); // 5

 

2、 AMD 模块规范  (异步加载依赖模块):

require(['math'], function (math) {   // 其中 math 是模块实例 
 math.add(2, 3);
});

 

3、CMD 模块规范  (异步加载依赖模块) :  CMD 是 淘宝的玉伯大牛搞 了 SeaJS, 在推广过程中对模块定义的规范化产出。基本国内在用 

 

4、UMD 模块规范:Universal Module Definition 通用模块定义

作用:一个模块代码,同时兼容 三种环境

  1. CommonJS(Node / Browserify)
  2. AMD(RequireJS)
  3. 浏览器全局变量(直接 script 标签引入)
一套代码,不用改,在哪都能跑。

UMD 核心逻辑套路

固定模板逻辑:
  1. 先判断是否是 AMD 环境(有 define && 能异步定义)
  2. 再判断是否是 CommonJS 环境(Node:module、exports)
  3. 都不是 → 挂到 浏览器全局 window 上

5、这里说到模块规范,es6 中的 import 也是一种模块规范。这里不做过多介绍,在es6分类中会详细介绍。

posted @ 2018-06-10 19:33  吴飞ff  阅读(141)  评论(0)    收藏  举报