Javascript 为什么使用Node JS创建REST API和MVC Web应用程序

Javascript 为什么使用Node JS创建REST API和MVC Web应用程序,javascript,node.js,events,web-applications,Javascript,Node.js,Events,Web Applications,我正在学习NodeJS,并尝试用它创建一些示例。为此,我学习了一些教程、博客或视频,最终用Express和Mongo db创建了一个web应用程序,因此我也被引导到了这个方向 在这段时间里,我读到的最反复的一句话是Node在处理事件和异步编程方面要好得多,因此基于事件的应用程序肯定可以像聊天服务器一样利用Node的功能(因为可能没有足够的处理)。但这些应用很少 现在,我不太想了解创建web应用程序(或RESTAPI)如何利用事件的优点。在理解Node时,我是否遗漏了一些东西?除了聊天服务器,No

我正在学习NodeJS,并尝试用它创建一些示例。为此,我学习了一些教程、博客或视频,最终用Express和Mongo db创建了一个web应用程序,因此我也被引导到了这个方向

在这段时间里,我读到的最反复的一句话是Node在处理事件和异步编程方面要好得多,因此基于事件的应用程序肯定可以像聊天服务器一样利用Node的功能(因为可能没有足够的处理)。但这些应用很少

现在,我不太想了解创建web应用程序(或RESTAPI)如何利用事件的优点。在理解Node时,我是否遗漏了一些东西?除了聊天服务器,Node是否还有其他应用程序?

它有一些Node.js应该在哪里使用的示例,比如

聊天

原料药

排队输入

数据流

代理


可以使用异步特性的地方还有很多。

让我继续讨论您提出的API/WebServer示例

由于Node.js基本上运行JavaScript代码,显然它本质上是异步的。因此,这基本上意味着它试图将任何昂贵或长时间运行的任务(如磁盘I/O或数据库请求)卸载给“其他人”(例如内核、本机db libs)。一旦完成,它就可以继续处理其他任务。因此它是非阻塞的

现在想想为静态html、js,。。。文件并提供API。基本上,您的服务器将要做的大量工作是“为我提供那个文件”(=磁盘I/O)或(在API的情况下)从数据库中获取一些数据。由于这些任务没有在节点环境中执行,因此节点应用程序本身(假设没有其他瓶颈)能够处理大量请求


此外,该节点是单线程的。对于标准用例,它不需要多个线程,因为与其他语言一样,您不存在线程将阻塞更长时间的问题。在我看来,这使它更容易使用,因为您不必处理并行编程带来的所有问题。然而,当涉及到CPU密集型任务时,这在web服务器和API领域相对少见,这可能是一个问题(这是可以解决的)。

为什么不呢?它们也是许多人对用其他大多数语言写作感兴趣的东西!