我正在学习NodeJS,并试图用它创建一些例子。我为此目的所遵循的教程,博客或视频,最后是如何使用Express和Mongo db创建Web应用程序,因此我也被引导到这个方向。
现在,我读到的最常见句子之一就是Node在处理事件和异步编程方面要好得多,因此基于事件的应用程序肯定可以利用Node的功能,就像聊天服务器一样(因为可能没有足够的处理工作)。但这些应用很少。
现在我很想知道创建Web应用程序(或REST API)如何利用事件的优点。在理解Node时是否有一些我错过的东西,除了聊天服务器之外还有Node的其他应用吗?
答案 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领域相对较少,这可能是一个问题(这是可以解决的)。