删除源文件后,Node.js应用程序仍然可以运行

时间:2018-06-24 22:59:51

标签: javascript node.js caching

我有一个Node.js应用程序,即使我从计算机上完全删除了它的源文件,该应用程序也可以运行。

怎么可能?

我听到了一些有关Node.js应用程序自动缓存源文件以更有效地工作的信息。

这是否意味着这些文件仍然存在?

1 个答案:

答案 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直到被解释/编译   回调被调用。

因此,删除特定操作后,您的应用程序可能会工作,但是一旦使用了新的依赖关系,节点将无法找到您的应用程序文件,并且将不可避免地崩溃。