We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
AMD、CMD、CommonJS是目前最常用的三种模块化书写规范,该篇文章主要是来介绍这些规范以及分析三种规范之前的差别。
CommonJS是服务器端模块的规范,node.js的模块系统,就是参照CommonJS规范实现的。 CommonJS定义的模块分为:{模块引用(require)} {模块定义(exports)} {模块标识(module)} require()用来引入外部模块;exports对象用于导出当前模块的方法或变量,唯一的导出口;module对象就代表模块本身。 示例:
// sum.js exports.add = function(a, b){return a + b}; // index.js var math = require('sum'); math.add(2,3); // 5
CommonJs更适用于服务端,因为服务器端一般采用同步加载文件,也就是说需要某个模块,服务器端便停下来,等待它加载再执行。但是浏览器不行,采用CommonJs规范来加载模块非常容易造成假死状态,因此浏览器更需要异步加载模块。
AMD是"Asynchronous Module Definition"的缩写,意思就是"异步模块定义",AMD的具体实现是RequireJs,它采用异步方式加载模块,模块的加载不影响它后面语句的运行。所有依赖这个模块的语句,都定义在一个回调函数中,等到加载完成之后,这个回调函数才会运行
AMD也采用require加载模块,加载两个参数, 第一个参数为需要加载的模块,第二个参数为回调函数,等模块加载完成后回调函数才会运行。
require(['math'], function (math) { math.add(2, 3); });
AMD由于是异步加载,浏览器不会发生假死,所以比较适合浏览器环境
CMD 即Common Module Definition通用模块定义,玉伯实现SeaJS时遵循他提出的CMD规范。在 CMD 规范中,一个模块就是一个文件。 示例:
define(function(require, exports, module) { // 模块代码 });
require是可以把其他模块导入进来的一个参数;而exports是可以把模块内的一些属性和方法导出的;module 是一个对象,上面存储了与当前模块相关联的一些属性和方法。 AMD和CMD的区别:
// CMD define(function(require, exports, module) { var a = require('./a') a.doSomething() // 此处略去 100 行 var b = require('./b') // 依赖可以就近书写 b.doSomething() // ... }) // AMD 默认推荐的是 define(['./a', './b'], function(a, b) { // 依赖必须一开始就写好 a.doSomething() // 此处略去 100 行 b.doSomething() ... })
AMD与CMD、CommonJS的区别与优缺点:
The text was updated successfully, but these errors were encountered:
No branches or pull requests
前言
AMD、CMD、CommonJS是目前最常用的三种模块化书写规范,该篇文章主要是来介绍这些规范以及分析三种规范之前的差别。
CommonJs
CommonJS是服务器端模块的规范,node.js的模块系统,就是参照CommonJS规范实现的。
CommonJS定义的模块分为:{模块引用(require)} {模块定义(exports)} {模块标识(module)}
require()用来引入外部模块;exports对象用于导出当前模块的方法或变量,唯一的导出口;module对象就代表模块本身。
示例:
CommonJs更适用于服务端,因为服务器端一般采用同步加载文件,也就是说需要某个模块,服务器端便停下来,等待它加载再执行。但是浏览器不行,采用CommonJs规范来加载模块非常容易造成假死状态,因此浏览器更需要异步加载模块。
AMD
AMD是"Asynchronous Module Definition"的缩写,意思就是"异步模块定义",AMD的具体实现是RequireJs,它采用异步方式加载模块,模块的加载不影响它后面语句的运行。所有依赖这个模块的语句,都定义在一个回调函数中,等到加载完成之后,这个回调函数才会运行
AMD也采用require加载模块,加载两个参数, 第一个参数为需要加载的模块,第二个参数为回调函数,等模块加载完成后回调函数才会运行。
AMD由于是异步加载,浏览器不会发生假死,所以比较适合浏览器环境
CMD
CMD 即Common Module Definition通用模块定义,玉伯实现SeaJS时遵循他提出的CMD规范。在 CMD 规范中,一个模块就是一个文件。
示例:
require是可以把其他模块导入进来的一个参数;而exports是可以把模块内的一些属性和方法导出的;module 是一个对象,上面存储了与当前模块相关联的一些属性和方法。
AMD和CMD的区别:
示例:
总结
AMD与CMD、CommonJS的区别与优缺点:
参考链接
The text was updated successfully, but these errors were encountered: