【AMD、CMD和CommonJS】

简介: 【AMD、CMD和CommonJS】

CommonJS规范的特点

对于基本数据类型,属于复制。即会被模块缓存。同时,在另一个模块可以对该模块输出的变量重新赋值。

对于复杂数据类型,属于浅拷贝。由于两个模块引用的对象指向同一个内存空间,因此对该模块的值做修改时会影响另一个模块。

当使用require命令加载某个模块时,就会运行整个模块的代码。

当使用require命令加载同一个模块时,不会再执行该模块,而是取到缓存之中的值。也就是说,CommonJS模块无论加载多少次,都只会在第一次加载时运行一次,以后再加载,就返回第一次运行的结果,除非手动清除系统缓存。

循环加载时,属于加载时执行。即脚本代码在require的时候,就会全部执行。一旦出现某个模块被"循环加载",就只输出已经执行的部分,还未执行的部分不会输出


CommonJS与AMD

CommonJS规范加载模块是同步的,也就是说,只有加载完成,才能执行后面的操作。

AMD规范则是非同步加载模块,允许指定回调函数。


由于Node.js主要用于服务器编程,模块文件一般都已经存在于本地硬盘,所以加载起来比较快,不用考虑非同步加载的方式,所以CommonJS规范比较适用。但是,如果是浏览器环境,要从服务器端加载模块,这时就必须采用非同步模式,因此浏览器端一般采用AMD规范


CMD和AMD

1.对于依赖的模块AMD是提前执行,CMD是延迟执行。不过RequireJS从2.0开始,也改成可以延迟执行(根据写法不同,处理方式不通过)。


2.AMD推崇依赖前置(在定义模块的时候就要声明其依赖的模块),CMD推崇依赖就近(只有在用到某个模块的时候再去require——按需加载)。


3.AMD的api默认是一个当多个用,CMD严格的区分推崇职责单一。例如:AMD里require分全局的和局部的。CMD里面没有全局的 require,CMD里每个API都简单纯粹。

相关文章
|
存储 Linux Windows
Linux常见指令(1)(下)
Linux常见指令(1)(下)
|
Unix Linux C语言
【Linux】基本指令(上)
【Linux】基本指令(上)
|
2月前
|
Unix Linux 索引
【Linux】-基本指令(上)
【Linux】-基本指令(上)
|
4月前
|
安全 Unix Linux
【Linux】基本指令
【Linux】基本指令
|
4月前
|
存储 Linux 网络安全
【Linux】常见指令(上)
【Linux】常见指令(上)
|
7月前
|
人工智能 Unix Linux
Linux基本指令
Linux基本指令
|
安全 Unix Linux
【Linux】基本指令(下)
【Linux】基本指令(下)
|
7月前
|
Unix Linux
【Linux】基本指令(下)
【Linux】基本指令(下)
122 5
|
7月前
|
算法 Linux Windows
Linux的基本指令(5)
Linux的基本指令(5)
46 1
|
7月前
|
存储 Linux Windows
Linux基本指令(三)
Linux基本指令(三)
76 0