为什么Node JS被用来创buildREST API和MVC Web应用程序

我正在学习NodeJS,并试图用它创build几个例子。 为了达到这个目的,我遵循的教程,博客或video,最终导致用Express和Mongo db创buildWeb应用程序,所以我也被引导到了这个方向。

现在我读的最重复的句子之一是节点处理事件和asynchronous编程要好得多,所以基于事件的应用程序可以像聊天服务器一样利用节点的function(因为可能没有足够的function要完成的处理)。 但是这些应用程序很less。

现在我有点好奇了解如何创build一个Web应用程序(或REST API)利用事件的好处。 在理解节点的时候有什么我错过了,除了聊天服务器之外,还有Node的其他应用程序吗?

https://www.toptal.com/nodejs/why-the-hell-would-i-use-node-js

它有一些Node.js应该使用的例子,

CHAT

API

排队input

数据stream

代理

在可以使用asynchronous特性的地方还有更多。

让我坚持你提出的API / WebServer例子。

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

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

另外节点是单线程的。 对于标准用例,它不需要多个线程,因为您没有像其他语言那样的问题,线程会阻塞较长时间。 在我看来,这样做更容易,因为您不必处理并行编程带来的所有问题。 但是,当涉及到CPU密集型任务(在Web服务器和API领域相对较less)时,这可能是一个问题(这是可以解决的)。