NodeJS中的`require`可以被认为是将文件加载到require的词法位置吗?

时间:2016-10-13 11:05:09

标签: node.js require

NodeJS中的require可以被认为是在require的词法位置加载和运行文件,但是受模块边界(模块范围)的限制吗?

1: console.log('foo');
2: var bar = require('bar'); // Loaded and evaluated in after line 1 is evaluated?
3: console.log('bam'); // Run after the contents of bar has been loaded and evaluated?

1 个答案:

答案 0 :(得分:2)

是的,在给定节点进程中第一次调用require("bar")。对require("bar")的后续调用将返回缓存副本。

如果您的代码构成整个程序,您可以保证在评估bar之前执行第1行。

如果它构成了某个程序的一部分,则无法保证这一点,因为bar可能已在之前的require("bar")调用中进行了评估。

在任何一种情况下,您都可以保证在评估bar后执行第3行。

进一步阅读: