2. node的模块简介
2019-07-10 本文已影响0人
萘小蒽
1. CommonJs规范
CommonJs对模块模块的定义非常简单,主要分为引用
、模块定义
和模块标识
3个部分。
1. 模块引用
模块引用的示例代码如下:
var math = require('math');
在CommonJs规范中,存在require()
方法,这个方法接受模块标识
。以此引入一个模块的api到上下文中。
2. 模块定义
对应引入的功能,上下文提供了exports
对象用于导出当前模块的方法或者变量。而且它是唯一的导出的出口。
在模块中还存在一个module
对象,它代表模块本身,exports
是module
的属性。
在node中一个文件就是一个模块,将方法挂载到exports
对象上就能作为属性即可定义导出的方式。
//math.js
exports.add = function () {
var sum = 0,
i = 0,
args = arguments,
j = args.length;
while (i < j) {
sum += args[i++]
}
return sum
}
在另一个文件中,我们通过require()
方法引入模块后,就能调用上面导出的方法了;
//program.js
var math = require('./math').add
var sum = math(1,2,3,4)
console.log(sum)
//10
3. 模块标识
模块标识其实就是传递给require()
方法的参数
模块标识必须是以小驼峰命名的字符,或者以
·
、··
开头的相对路径或者绝对路径,它可以没有文件名后缀(.js)。
模块的定义简单,接口简洁,它的意义是将类聚的发方法和变量等限定在私有的作用域中,同时支持引入和到处功能顺畅的连接上下文依赖。如下面图所示,每个模块具有独立的空间,他们互不干扰,在引用时也显得利落。
模块之间导入导出