我正在学习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
答案 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
}
}
中仍然需要它。
答案 1 :(得分:0)
模块._load 这个函数检查模块是否已经在缓存中——如果是,它返回导出对象。
如果模块是原生模块,它会使用文件名调用 NativeModule.require() 并返回结果。
否则,它会为文件创建一个新模块并将其保存到缓存中。然后在返回其导出对象之前加载文件内容。
Module._compile compile 函数在正确的作用域或沙箱中运行文件内容,并将诸如 require、module 或 exports 之类的辅助变量公开到文件中。