首页 > 试题广场 >

说一下Commonjs、 AMD和CMD

[问答题]
请你讲一下对于JS中模块的理解,Commonjs、 AMD和CMD分别有什么特点?
模块化开发方便代码的管理,提高代码复用性,降低代码耦合,每个模块都会有自己的作用域,当前流行的模块化规范有CommonJS,AMD,CMD,ES6的import
CommonJS的主要实践者就是nodejs,一般对模块输出用module.exports去输出,用require去引入模块,
CommonJS一般采用同步加载
AMD主要采用异步加载模式,AMD的主要实践有require.js
CMD是主要实践是Sea.js,与AMD相似,AMD依赖前置加载,提前加载执行,CMD就近加载,延迟加载
发表于 2019-03-28 17:24:29 回复(0)

AMD与CMD两者对比(总结)

AMD时RequireJS在推广的过程中对模块定义的规范化产出,RequireJS在主文件里是将所有的文件同时加载。

CMD是SeaJS在推广过程中对模块定义的规范化产出,SeaJS强调一个文件一个模块。‘

AMD推崇依赖前置:在定义模块的时候要先声明其依赖的模块,所以JS可以及其轻巧地知道某个模块依赖的模块是哪一个,因此可以立即加载那个模块,也就是提前执行

CMD推崇依赖就近:它只要依赖的模块在附近就可以了 ,因此它要等到所有的模块变为字符串,解析一遍之后才知道他们之间的依赖关系,CMD加载完某个模块后没有立即执行而是等到遇到require语句的时再执行,也就是延迟执行

他们两者的目的都是为了 JavaScript 的模块化开发,但其不同导致各自的优点是:

AMD用户体验好,因为模块提前执行了;

CMD性能好,因为只有用户需要的时候才执行。


发表于 2019-03-17 15:06:40 回复(0)