使用require导入模块时,var md = require("./testExports") require返回值实际上是module.exports的值。
例子1:
在 testExports.js 文件中:
module.exports = { name : "张三", age : 18 }
在test.js文件中。
var md = require("./testExports"); console.log(md.name); console.log(md.age);
运行后,打印如下:
例子2:
把上面的 testExports.js 文件的内容改为下面的。
exports = { name : "张三", age : 18 }
打印如下:
这是因为我们写的代码被封装在function (exports, require, module, __filename, __dirname) { } 方法中 ,nodejs传递参数的时候传递的 exports的值等于 module.exports 。
这里把exports的引用指向另一个对象。只是改变了exports的引用。并没有改变module.exports的值。require加载模块时,返回的值是module.exports的值,所以获取不到值。
结论:
如果要暴露多个属性使用。module.exports = { 属性1:值1,属性2:值2 } 。
如果只暴露单个属性。可以使用 module.exports.属性1 = 值1 或者 exports.属性1 = 值1。