JavaScript——require/exports
module对象
-
Node 内部提供一个Module构造函数。模块是Module的是实例
function Module(id, parent) { this.id = id; this.exports = {}; this.parent = parent; } -
每个模块(即每个文件)都一个module对象,module代表模块本身,module的exports属性是对外的接口,加载某个模块,其实是加载该模块的module.exports属性
{ module.id 模块的识别符,通常是带有绝对路径的模块文件名。 module.filename 模块的文件名,带有绝对路径。 module.loaded 返回一个布尔值,表示模块是否已经完成加载。 module.parent 返回一个对象,表示调用该模块的模块。 module.children 返回一个数组,表示该模块要用到的其他模块。 module.exports 表示模块对外输出的值。 } -
require 方法用于加载模块,即加载的是 module.exports 对象
用法
// 文件1 export.js
module.exports = {
test: 'TEST'
}
// 文件2 require.js
const re = require('./export.js')
cnosole.log(re)
exports变量
为了方便,noed为每个模块提供了一个exports变量,指向module.exports。相当于在每个文件头部执行这样一条命令:var exports = module.exports;
注意
- exports = addOne*; // exports 被重新赋值了,不在指向module.exports*
- exports.addOne = addOne*;* module.exports = 'hello'; // exports 指向 module.exports, module.exports 指向了一个字符串,所以addOne不能被外部访问了