require一个已经require过的文件Node.js还会重新编译吗?
发布于 11 年前 作者 chengluyu 9255 次浏览 最后一次编辑是 8 年前

就是说一个文件require过之后再require是重新编译执行,还是执行以前已经编译好的代码?

正在做一个plugin loader,我在想是由plugin来require('pluginLoader.js'),还是loader自己扫一遍./plugins/目录。

3 回复

你所说的编译是什么意思?

你可以去阅读下Node的module.js模块就理解了。

require有三个点,require(‘pluginLoader.js’):

  1. 解析出pluginLoader.js的path,读取该文件
  2. 将pluginLoader.js里的代码丢到一个context运行,获取module.exports,module.exports会被保存下来,重复使用
  3. 在其他require pluginLoader.js的模块中,获取的就是pluginLoader.js的module.exports

在window环境下由于不区分大小写,require的a.jsA.js作为同一个文件但会引入2次,linux环境下不会!如上所说,引入过的文件不会重复引入,都在缓冲区存着~

再次require既不会编译也不会执行,只会把原来的变量给你,这个变量在一个进程里是唯一的。

回到顶部