Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Node.js中,需要模块会如何影响性能?_Javascript_Node.js - Fatal编程技术网

Javascript 在Node.js中,需要模块会如何影响性能?

Javascript 在Node.js中,需要模块会如何影响性能?,javascript,node.js,Javascript,Node.js,最近我在Node.js上阅读了一些文档,试图让我开始一些个人工作。在这个过程中,一个想法一次又一次地出现,但我没有得到一个满意的答案 到目前为止,在我看到的每一段代码中,都有相当多的require()。我理解它的主要功能是包含模块。但人们似乎也用它来在主应用程序中包含其他Javascript文件。 据我所知,在Javascript中没有合适的方法来实现这一点(如下所述:) 这是我关心的问题;根据文件的功能分离文件显然有助于提高可读性。但是,require()是否会大幅降低程序的速度,因为它必须通

最近我在Node.js上阅读了一些文档,试图让我开始一些个人工作。在这个过程中,一个想法一次又一次地出现,但我没有得到一个满意的答案

到目前为止,在我看到的每一段代码中,都有相当多的require()。我理解它的主要功能是包含模块。但人们似乎也用它来在主应用程序中包含其他Javascript文件。 据我所知,在Javascript中没有合适的方法来实现这一点(如下所述:)

这是我关心的问题;根据文件的功能分离文件显然有助于提高可读性。但是,require()是否会大幅降低程序的速度,因为它必须通过打开Javascript文件等方式获取信息?如果是这样,那么这种差异是否足以让web应用程序担心呢


在提交版本之前,编写一个自动化组装过程的程序以获得一个文件(或至少一个更单一的文件)不是更为谨慎吗?

在服务器上,与服务器正在做的其他事情相比,任何性能影响都是无关紧要的(就像解释和执行所有这些javascript一样!)当然,如果你有性能问题并且对这种说法表示怀疑,那么衡量它从来都不是一个坏主意


另一方面,如果我们谈论的是将通过网络发送到浏览器的javascript,那么情况就不同了……有大量的工具用于捆绑和缩小代码,以便浏览器可以更快地下载/执行。也就是说,HTTP 2对这一点做了一些改变——使用这种新协议,许多文件通常可以更快地并行下载是的,这主要是开发版本和发布版本之间的区别。您可以在开发过程中保持代码整洁,当您准备发布时,将其打包,并在完成后将缩小的版本发送到测试/生产服务器;)顺便说一句,您链接的问题是从2009年开始的,从那时起,js技术发生了很大的变化,现在有了commonjs、webpack、gulp、grunt。。。您可以为您的javascript项目创建一个干净的代码库SAFAIK所需的模块由节点缓存,因此我认为不会因为多个
require
calls@VsevolodGoloviznin是的,模块被缓存:FWIW节点中的模块缓存不仅仅是缓存文件。所有模块都是单例的。因此,它们只被编译和执行一次。这很好,因为如果您需要node.js中的单例,您不需要编写任何东西。
module.exports
对象是一个单例对象。实际上,当node.js遇到未缓存模块的require()行时,文件将加载到同一线程中,服务器的其余部分将等待。如果文件来自速度较慢的资源(如NFS),则影响并非无关紧要。这就是为什么以这样的方式构造代码是很好的,即在初始化期间调用所有需要的代码。