JavaScript——require/exports详解

109 阅读1分钟

JavaScript——require/exports

module对象

  1. Node 内部提供一个Module构造函数。模块是Module的是实例

    function Module(id, parent) {
    	this.id = id;
    	this.exports = {};
    	this.parent = parent;
    }
    
  2. 每个模块(即每个文件)都一个module对象,module代表模块本身,module的exports属性是对外的接口,加载某个模块,其实是加载该模块的module.exports属性

    {
    	module.id 模块的识别符,通常是带有绝对路径的模块文件名。
        module.filename 模块的文件名,带有绝对路径。
        module.loaded 返回一个布尔值,表示模块是否已经完成加载。
        module.parent 返回一个对象,表示调用该模块的模块。
        module.children 返回一个数组,表示该模块要用到的其他模块。
        module.exports 表示模块对外输出的值。
    }
    
  3. 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;

注意

  1. exports = addOne*; // exports 被重新赋值了,不在指向module.exports*
  2. exports.addOne = addOne*;* module.exports = 'hello'; // exports 指向 module.exports, module.exports 指向了一个字符串,所以addOne不能被外部访问了