当require()时,它自动运行所需文件的console.log-NodeJS

时间:2018-07-16 09:12:28

标签: javascript node.js bash

我正在学习NodeJ,并遇到了这个问题。为什么console.log即使我没有导入也要进入index.js文件。

我认为我只是解构并将func函数从modules.js转移到index.js。

有任何解释或说明吗?非常感谢。

/*modules.js*/
module.exports.sum = (a,b) => a + b

console.log("this is from module");

/*index.js*/
const {sum} = require("./modules")
console.log("sum", ourModules.sum(7,8))

/*bash*/
node index.js
this is from module
sum 15

2 个答案:

答案 0 :(得分:2)

当您在Node.js中require() sum = (a,b) => a + b时,该文件的所有内容全部被执行。

这意味着即使您在modules.js top 处导出console.log(),其下方的index.js也会 之所以被叫,是因为您 class Immutable { let a: Int init(a: Int) { self.a = a } } 中仍然需要它。

https://nodejs.org/api/modules.html

答案 1 :(得分:0)

模块._load 这个函数检查模块是否已经在缓存中——如果是,它返回导出对象。

如果模块是原生模块,它会使用文件名调用 NativeModule.require() 并返回结果。

否则,它会为文件创建一个新模块并将其保存到缓存中。然后在返回其导出对象之前加载文件内容。

Module._compile compile 函数在正确的作用域或沙箱中运行文件内容,并将诸如 require、module 或 exports 之类的辅助变量公开到文件中。