美文网首页
JavaScript模块化编程 - CommonJS, AMD

JavaScript模块化编程 - CommonJS, AMD

作者: Anon_0507 | 来源:发表于2017-12-26 16:03 被阅读0次
     CommonJs是一个组织,它定了一个Modules规范,用来解决JS没有模块(js文件)化管理代码的功能。

关键部分是require - 引入依赖;export - 导出模块这两个函数。然而这个Modules规范当初是为服务器端设计的,是一个同步模式,这种模式并不适合浏览器端,因为浏览器同步模式一个一个加载模块会变得打开非常的慢。所以,这时候AMD就是为了解决这个问题而产生的,它最大的特点就是可以异步加载模块,具体不同在于AMD有一个define函数,他可以让当前模块运行时先加载当前模块所需要的模块。
而RequireJs就是AMD现在用的最广泛,最流行的实现。所以这三者之间的关系可以这样理解:CommonJs(泛指Modules规范)和AMD都是为了解决JS模块化的规范API,CommonJs更适合于服务器端,而AMD基本就是用于浏览器端(不过也可以用于服务器端,比如Node loader方向),而RequireJs就是AMD最流行的实现。
而CMD则是国内玉伯大神在开发SeaJs的时候提出来的,属于CommonJs的一种规范
AMD:RequireJs
CMD : SeaJs
CMD和AMD都是CommonJs的一种规范的实现主义,SeaJs和RequireJs就是对应的实践。说白了就是CMD和AMD是理论,SeaJs和RequireJs是对应的产物。

CMD和AMD的区别:CMD相当于按需加载,定义一个模块的时候不需要立即制定依赖模块,在需要的时候require就可以了(同步的),比较方便;而AMD则相反,定义模块的时候需要制定依赖模块,并以形参的方式引入factory中。

区别看下边例子:
//AMD
define(['dep1','dep2'],function(dep1,dep2){
//内部只能使用制定的模块
return function(){};
});
//CMD
define(function(require,exports,module){
//此处如果需要某XX模块,可以引入
var xx=require('XX');
});

AMD规范后来也允许输出的模块兼容CommonJs规范(同步),这时define方法需要写成下面这样:
define(function (require, exports, module){
var someModule = require("someModule");
var anotherModule = require("anotherModule");

someModule.doTehAwesome();
anotherModule.doMoarAwesome();

exports.asplode = function (){
someModule.doTehAwesome();
anotherModule.doMoarAwesome();
};});

相关文章

  • js模块化相关

    js模块化编程之彻底弄懂CommonJS和AMD/CMD!

  • JS模块开发学习资源

    Javascript模块化编程(一):模块的写法Javascript模块化编程(二):AMD规范Javascrip...

  • ECMAScript6:模块化编程

    模块 The old way 传统JavaScript有相当多的模块化方案(AMD,CommonJS,UMD等)。...

  • JavaScript模块化编程 - CommonJS, AMD

    关键部分是require - 引入依赖;export - 导出模块这两个函数。然而这个Modules规范当初是为服...

  • webpack

    模块化: 命名冲突 文件依赖 模块化编程: 函数写法 对象写法 立即执行函数写法 CommonJS规范AMD规范 ...

  • javascript模块化比较

    当前有以下几种JavaScript模块化开发方式: 标签 CommonJS AMD and 其他 ES6 modu...

  • JS模块化

    模块化规范:CommonJS,AMD,CMD,UMD,ES6 Module CommonJS CommonJS是服...

  • SystemJS笔记

    简介 JavaScript模块化有一些规范,如CommonJS、AMD、CMD、ES6 Module,可以看看这篇...

  • babel的使用

    模块化分类 CMD/AMD : 适用于浏览器的JavaScript的模块化 CommonJS : 适用于服务器的J...

  • ES6模块化

    模块化技术有哪些:- CommonJS(nodejs)、ES6模块化、AMD、CMD等 CommonJS:Comm...

网友评论

      本文标题:JavaScript模块化编程 - CommonJS, AMD

      本文链接:https://www.haomeiwen.com/subject/jbljgxtx.html