require一个已经require过的文件Node.js还会重新编译吗?
就是说一个文件require
过之后再require
是重新编译执行,还是执行以前已经编译好的代码?
正在做一个plugin loader,我在想是由plugin来require('pluginLoader.js')
,还是loader自己扫一遍./plugins/
目录。
3 回复
你所说的编译是什么意思?
你可以去阅读下Node的module.js模块就理解了。
require有三个点,require(‘pluginLoader.js’):
- 解析出pluginLoader.js的path,读取该文件
- 将pluginLoader.js里的代码丢到一个context运行,获取module.exports,module.exports会被保存下来,重复使用
- 在其他require pluginLoader.js的模块中,获取的就是pluginLoader.js的module.exports
在window环境下由于不区分大小写,require的a.js
和A.js
作为同一个文件但会引入2次,linux环境下不会!如上所说,引入过的文件不会重复引入,都在缓冲区存着~
再次require既不会编译也不会执行,只会把原来的变量给你,这个变量在一个进程里是唯一的。