require与module.exports的特性

2019-04-13  本文已影响0人  XZ阳光小熊

1、在node.js中我们使用require方法引入模块,require方法有一下特性需要注意:

// moduleA.js
module.exports.testValue = 'a';
// 到此处开始执行moduleB的代码
const moduleB = require('./moduleB');
// 因为moduleB已经执行完毕此处输出bb
console.log('moduleB:',moduleB.testValue);

module.exports.testValue = 'aa';

// moduleB.js
module.exports.testValue = 'b';
const moduleA = require('./moduleA');
// 执行输出时因为moduleA中才执行到引入moduleB故此处输出值为a
console.log('moduleA',moduleA.testValue);

module.exports.testValue = 'bb';

// main.js
const moduleA = require('./moduleA');
// 因为在moduleA中已经引用了moduleB故此处引用并不会输出内容
const moduleB = require('./moduleB');

以上示例就是一个循环调用的例子,实际应用中我们要尽量避免循环调用一个模块。
2、exports与module.exports的区别。
  在node.js中我们将模块导出时可以使用exports或者module.exports来导出模块中的内容。我们可以认为exports是一个变量它的值为module.exports,因此我们在导出模块的时候需要注意一下问题:

// 错误的写法
// export = 10;
// export = {
//     name: 'xiaoming'
// }
// 正确的写法
export.name = 10;
export.obj = {
    name: 'xiaoming'
}
// 或者
module.export = 10;
module.export = {
    name: 'xiaoming'
}
上一篇下一篇

猜你喜欢

热点阅读