AMD、CMD、CommonJS
2020-07-22 本文已影响0人
zhulichao
-
AMD(Asynchronous Module Definition)、CMD(Common Module Definition)、CommonJS
AMD、CMD、CommonJS是JS模块化开发的标准,CommonJS是用在服务器端的,同步的,如Node.js。AMD、CMD是用在浏览器端的,异步的,如RequireJS和SeaJS。其中,AMD先提出,CMD是根据CommonJS和AMD基础上提出的。
CommonJS 加载模块是同步的,所以只有加载完成才能执行后面的操作。像Node.js主要用于服务器的编程,加载的模块文件一般都已经存在本地硬盘,所以加载起来比较快,不用考虑异步加载的方式,所以CommonJS规范比较适用。但如果是浏览器环境,要从服务器加载模块,这是就必须采用异步模式,所以就有了AMD和CMD解决方案。
AMD和CMD的区别有以下几点:
> **AMD推崇依赖前置,CMD推崇依赖就近。AMD和CMD最大的区别是对依赖模块的执行时机处理不同**
> 对于依赖的模块AMD是提前执行,CMD是延迟执行。不过RequireJS从2.0开始,也改成可以延迟执行。
> AMD的api默认是一个当多个用,CMD严格的区分推崇职责单一。例如:AMD里require分全局的和局部的。CMD里面没有全局的require,提供seajs.use()来实现模块系统的加载启动。CMD里每个API都简单纯粹。
UMD(Universal Module Definition 通用模块规范),因为AMD,CommonJS规范是两种不一致的规范,虽然他们应用的场景也不太一致,但是人们仍然是期望有一种统一的规范来支持这两种规范。于是,UMD规范诞生了。