我有一个Node.js应用程序,即使我从计算机上完全删除了它的源文件,该应用程序也可以运行。
怎么可能?
我听到了一些有关Node.js应用程序自动缓存源文件以更有效地工作的信息。
这是否意味着这些文件仍然存在?
答案 0 :(得分:1)
尽管JavaScript是一种解释性语言,但node.js会将您的源文件编译为本地机器代码。启动应用程序后,您可以删除JavaScript文件,并且由于代码已经编译,它将继续运行。
以下是Wikipedia的节选v8引擎摘录,可帮助您更好地了解发生了什么:
V8将JavaScript编译为本机代码(IA-32,x86-64,ARM, PowerPC,IBM s390或MIPS ISA)执行之前,而不是执行更多操作 传统技术,例如解释字节码或编译 整个程序转换为机器码,然后从文件系统执行。的 编译后的代码会进行其他优化(并重新优化) 根据代码执行的启发式方法在运行时动态地 轮廓。使用的优化技术包括内联,省略 昂贵的运行时属性,内联缓存等等。
如David784所述:
可能值得注意的是,此编译是根据需要进行的 基础。例如,如果您只有一个require('./ other.js') 的回调,other.js直到被解释/编译 回调被调用。
因此,删除特定操作后,您的应用程序可能会工作,但是一旦使用了新的依赖关系,节点将无法找到您的应用程序文件,并且将不可避免地崩溃。