在掘金的一篇文章中看到了“UMD规范的IIFE模板”字样,由于肚子里的东西不多,所以进行了www.baidu.com,最终看到了一篇文章(文章链接:http://www.cnblogs.com/imwtr/p/4666181.html),其中对CommonJS、AMD、CMD、UMD进行了讲解,看过之后觉得可以解释我心中的疑惑,所以来写一篇文章来记录一下。
CommonJS:
一种规范,一个单独的文件就是一个单独的模块,每一个模块就是一个单独的作用域。在加载CommonJS规范的模块的时候采取的都是同步的,这就意味着加载过程比较缓慢,随之就产生了AMD、CMD等解决方案。
AMD:
RequireJS推出的异步加载模块,运行时核心思想是“提前执行依赖”,推崇“依赖前置”。
CMD:
SeaJS推出的,推崇“延迟执行,按需加载”。
UMD:
AMD和CommonJS的结合,AMD 浏览器第一的原则发展异步加载模块。CommonJS 模块以服务器第一原则发展,选择同步加载。最终产生UMD,先判断是否支持Node.js的模块(exports)是否存在,存在则使用Node.js模块模式。再判断是否支持AMD(define是否存在),存在则使用AMD方式加载模块。
-
IIFE(Imdiately Invoked Function Expression)立即执行函数。