CNode

require一个已经require过的文件Node.js还会重新编译吗?

Cchengluyu发布于13 年前最后回复13 年前3 回复9849 浏览0 收藏

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

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

查看回复

回复 (3)

Z
zaobao#1·13 年前

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

I
island205#2·13 年前

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

你可以去阅读下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
A
a272121742#3·13 年前

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

参与回复
登录后即可参与回复。登录