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?
答案 0 :(得分:2)
是的,在给定节点进程中第一次调用require("bar")
。对require("bar")
的后续调用将返回缓存副本。
如果您的代码构成整个程序,您可以保证在评估bar
之前执行第1行。
如果它构成了某个程序的一部分,则无法保证这一点,因为bar
可能已在之前的require("bar")
调用中进行了评估。
在任何一种情况下,您都可以保证在评估bar
后执行第3行。
进一步阅读: