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

时间:2017-01-29 19:25:45

标签: javascript node.js events web-applications

我正在学习NodeJS,并试图用它创建一些例子。我为此目的所遵循的教程,博客或视频,最后是如何使用Express和Mongo db创建Web应用程序,因此我也被引导到这个方向。

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

现在我很想知道创建Web应用程序(或REST API)如何利用事件的优点。在理解Node时是否有一些我错过的东西,除了聊天服务器之外还有Node的其他应用吗?

2 个答案:

答案 0 :(得分:1)

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

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

CHAT

API

QUEUED INPUTS

DATA STREAMING

PROXY

可以使用异步性质的更多内容。

答案 1 :(得分:0)

让我继续坚持您提出的API / WebServer示例。

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

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

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