【问题标题】:Why is Node JS being used to create REST APIs and MVC Web Applications为什么 Node JS 被用于创建 REST API 和 MVC Web 应用程序
【发布时间】:2017-01-29 19:25:44
【问题描述】:

我正在学习 NodeJS,并尝试用它创建一些示例。我为此目的而关注的教程、博客或视频最终如何使用 Express 和 Mongo db 创建 Web 应用程序,因此我也被引导到了那个方向。

这段时间我读到的最重复的一句话是 Node 在处理事件和异步编程方面要好得多,所以基于事件的应用程序肯定可以利用 Node 的功能,就像聊天服务器一样(可能还不足以完成处理)。但这些应用程序很少。

现在我不太想了解创建 Web 应用程序(或 REST API)如何利用事件的优点。在理解 Node 时,我是否遗漏了什么?除了聊天服务器之外还有其他 Node 应用吗?

【问题讨论】:

标签: javascript node.js events web-applications


【解决方案1】:

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

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

聊天

API

排队输入

数据流

代理

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

【讨论】:

    【解决方案2】:

    让我继续你提出的 API/WebServer 示例。

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-15
      • 2013-07-08
      • 2017-04-07
      • 2014-10-19
      • 2017-04-12
      • 2021-12-13
      • 2015-10-01
      • 1970-01-01
      相关资源
      最近更新 更多