1、 CommonJS就是为JS的表现来制定规范,NodeJS是这种规范的实现,webpack也是以 CommonJS的形式来书写。因为js没有模块的功能,所以CommonJS应运而生。但它不能在浏 览器中运行。CommonJS定义的模块分为:{模块引用(require)} {模块定义(exports)} {模块 标识(module)}
2、 RequireJS是一个JavaScript模块加载器。RequireJS有两个主要方法(method): define()和requ让e()。这两个方法基本上拥有相同的定义(declaration)并且它们都知道如 何加载的依赖关系,然后执行一个回调函数(callback function) 。与require()不同的是, define()用来存储代码作为一个已命名的模块。因此define()的回调函数需要有一个返回值 作为这个模块定义。这些类似被定义的模块叫作AMD (Asynchronous Module Definition,异 步模块定义)。
3、 AMD是RequireJS在推广过程中对模块定义的规范化产出AMD异步加载模块。它的模块 支持对象函数构造器字符串JSON等各种类型的模块。适用AMD规范适用define方法定 义模块。
4、CMD是SeaJS在推广过程中对模块定义的规范化产出
AMD与CDM的区别:
1、 对于于依赖的模块,AMD是提前执行(好像现在也可以延迟执行了),CMD是延迟执行。
2、 AMD推崇依赖前置,CMD推崇依赖就近。
3、 AMD推崇复用接口,CMD推崇单用接口。
4、 书写规范的差异。
5、 umd 是 AMD 和 CommonJS 的糅合。
AMD浏览器第一的原则发展异步加载模块。
CommonJS模块以服务器第一原则发展,选择同步加载,它的模块无需包装(unwrappedmodules)。 这迫使人们又想出另一个更通用的模式UMD ( Universal Module Definition ),希望解决跨 平台的解决方案。UMD先判断是否支持Node. js的模块(exports )是否存在,存在则使用 Node. js模块模式。
Was this helpful?
0 / 0