什么是 Node.js

概要:在本教程中,您将了解什么是 Node.js 以及何时何地应该使用 Node.js。

Node.js 简介

Node.js 是一种开源的跨平台运行时环境,允许您使用 JavaScript 开发服务器端应用程序。

每个 Web 浏览器都具有一个 JavaScript 引擎,用于将 JavaScript 代码编译为机器代码。例如,Firefox 使用 SpiderMonkey,而 Google Chrome 使用 V8

由于浏览器使用不同的 JavaScript 引擎,因此有时您会发现 JavaScript 在不同浏览器中的行为有所不同。

2009 年,Node.js 的创建者 Ryan Dahl 采用了 V8 引擎,并将它嵌入到一个可以在服务器上执行 JavaScript 的应用程序中。

下图说明了 Node.js 系统

Node.js 使用单线程、非阻塞和事件驱动的执行模型,这与 Web 浏览器中 JavaScript 的执行模型类似。

Node.js 是单线程的

Node.js 是单线程的,这意味着每个进程仅运行一个执行线程。

单线程执行模型允许 Node.js 通过事件循环轻松处理更多并发请求。因此,Node.js 应用程序通常比其他应用程序消耗更少的内存。

如果您不熟悉 事件循环,请查看本教程。需要注意的是,Node.js 中的事件循环与 Web 浏览器中的事件循环的工作方式类似。

Node.js 使用非阻塞 I/O

I/O 代表输入/输出,可能涉及磁盘访问、网络请求或数据库连接。I/O 请求很昂贵且速度慢,会导致其他操作被阻止。

Node.js 通过使用非阻塞 I/O 操作来解决阻塞 I/O 问题。

在非阻塞模型中,您可以启动一个请求,同时执行其他任务。请求完成后,将执行一个回调函数来处理结果。

Node.js 是事件驱动的

Node.js 使用事件驱动架构,这意味着 Node.js 等待事件发生,并在事件发生时做出响应,而不是遵循线性、自上而下的执行模型。

以下是 Node.js 事件驱动架构的工作原理

  1. 一个事件(例如客户端向服务器发送请求)会触发一个事件处理程序函数。
  2. 然后 Node.js 将事件处理程序(回调函数)添加到事件队列中。
  3. 事件循环是一个在 Node.js 中持续运行的循环,它会检查事件队列,并逐个处理事件。它会为每个事件执行相应的事件处理程序。
  4. 在事件循环处理这些事件时,Node.js 可以继续处理其他任务,例如监听新事件。

为什么选择 Node.js

Node.js 非常适合原型设计和敏捷开发,允许您构建快速且高度可扩展的应用程序。

Node.js 拥有一个庞大的开源库生态系统,因此您可以重复使用现有的库,从而有更多时间专注于业务逻辑。

如果您已经使用 JavaScript 进行前端开发,那么您可以将现有的技能用于服务器端开发。

在客户端和服务器端都使用相同的 JavaScript 使您的代码库更简洁、更一致。

Node.js 的现实世界用例

Node.js 拥有广泛的现实世界应用

  • 可扩展的网络应用程序:LinkedIn、Uber 和 Netflix 等大型公司使用 Node.js 开发可扩展的应用程序。
  • 实时应用程序 - 由于 Node.js 使用事件驱动、非阻塞 I/O 模型,因此它非常适合实时应用程序,包括聊天和在线游戏。
  • API 和微服务 - Node.js 通常用于开发 Restful API 和微服务。
  • 物联网设备:Node.js 为各种物联网 (IoT) 应用程序提供支持。

总结

  • Node.js 是一种开源的跨平台运行时环境,允许您使用 JavaScript 开发服务器端应用程序。
本教程是否有帮助?