CommonJs的模块规范

CommonJs对模块的定义主要分为模块引用、模块定义、模块标识3个部分。

1.模块引用

模块引用的示例代码如下:

var math = require("match");

2.模块定义

在模块化中,上下文提供require()方法来引入外部模块。对应引入的功能,上下文提供了exports对象用于导出当前模块的方法或者变量,并且它是唯一导出的出口。在模块中,还存在一个module对象,它代表模块自身,而exports是module的属性。在Node中,一个文件就是一个模块,将方法挂载在exports对象上作为属性即可定义导出的方式:

 1 //math.js
 2 exports.add = function(){
 3     var sum = 0;
 4     var i = 0;
 5     var args = arguments;
 6     var l = args.length;
 7     while(i < l){
 8         sum += args[i++];
 9     }
10     return sum;
11 };

在另一个文件中,我们通过require()方法引入模块后,就能调用定义的属性或方法:

1 //program.js
2 var math = require("math");
3 exports.increment = function(val){
4     return math.add(val, 1);
5 };

3.模块标识

模块标识其实就是传递给require()方法的参数,它必须是符合小驼峰命名的字符串,或者以“.”、“..”开头的相对路径,或者绝对路径。它可以没有文件名后缀".js"。

模块的意义在于将类聚的方法和变量等限定在私有的作用域中,同时支持引入和导出功能以顺畅的连接上下游依赖。如下图所示,每个模块具有独立的空间。它们互不干扰,在引用的时候也显得干净利落。

原文地址:https://www.cnblogs.com/mxk258/p/4242213.html