Javascript 在JS中导入(require)模块是否也会执行整个代码?

Javascript 在JS中导入(require)模块是否也会执行整个代码?,javascript,node.js,module,export,Javascript,Node.js,Module,Export,将moduleFile.js设为 常量计算={ 加(a,b)={返回a+b}, sub(a,b)={返回a-b} } log(`hello from module`); exports.calcModule=calc; 让main.js与moduleFile.js位于同一目录中 const{calcModule}=require(`./moduleFile`); console.log(calcModule.add(1,2)); 当我在控制台中执行main.js作为$node main.js

将moduleFile.js设为

常量计算={
加(a,b)={返回a+b},
sub(a,b)={返回a-b}
}
log(`hello from module`);
exports.calcModule=calc;
让main.js与moduleFile.js位于同一目录中

const{calcModule}=require(`./moduleFile`);
console.log(calcModule.add(1,2));
当我在控制台中执行
main.js
作为
$node main.js

结果是

hello from module
3
我很难理解模块中的hello也打印出来了。

导入模块是否包括执行整个模块文件?

是。第一次用
require()
加载CommonJS模块时,将执行任何顶级代码。如您所见,这种情况下必须运行
exports.calcModule=calc
并为模块建立导出,您的
console.log('hellow from module')
也将运行

加载后,模块将被缓存,因此对同一模块的
require()
的任何其他调用都将从模块的原始执行返回导出对象,顶级代码将不会再次运行。因此,顶层代码只运行一次,无论模块在程序中加载多少次

导入模块是否包括执行整个模块文件


是的,它执行您正在加载的模块中的所有顶级代码。

导入模块是否包括执行整个模块文件?
是的。怎么没有人指出这个导入文件?!泰铢,请答复:)