Node.js - 简介



什么是Node.js?

Node.js 是一个基于 Google Chrome 的 JavaScript 引擎(V8 引擎)构建的服务器端运行时环境。Node.js由 Ryan Dahl 于 2009 年开发,其最新版本为 v20.9.0。Node.js 是一个跨平台(在 Windows、Linux、Unix、macOS 等上运行)、开源的后端 JavaScript 运行时环境,可在 Web 浏览器之外执行 JavaScript 代码。

其官方文件提供的Node.js定义如下:

Node.js 是一个基于 Chrome 的 JavaScript 运行时构建的平台,用于轻松构建快速且可扩展的网络应用程序。Node.js 使用事件驱动的非阻塞 I/O 模型,使其轻量级且高效,非常适合跨分布式设备运行的数据密集型实时应用程序。

Node.js环境是事件驱动的,并提供非阻塞 I/O,可优化 Web 应用程序中的吞吐量和可扩展性。OpenJS基金会在Linux基金会的协作项目计划的推动下,现在负责Node.js分布式开发。

Node.js的特点

以下是使Node.js成为软件架构师首选的一些重要功能。

  • 异步和事件驱动 - Node.js库的所有 API 都是异步的,即非阻塞。从本质上讲,这意味着基于 Node.js 的服务器永远不会等待 API 返回数据。服务器在调用下一个 API 后移动到下一个 API,Node.js事件的通知机制帮助服务器从前一个 API 调用中获取响应。
  • 非常快 - 基于 Google Chrome 的 V8 JavaScript 引擎构建Node.js库的代码执行速度非常快。
  • 单线程但高度可扩展 - Node.js使用具有事件循环的单线程模型。事件机制帮助服务器以非阻塞方式做出响应,并使服务器具有高度可扩展性,这与创建有限线程来处理请求的传统服务器不同。Node.js使用单线程程序,与Apache HTTP Server等传统服务器相比,同一程序可以为更多的请求提供服务。
  • 无缓冲 - Node.js应用程序从不缓冲任何数据。这些应用程序只是以块的形式输出数据。
  • 许可证 - Node.js在 MIT许可证 下发布。

下图描绘了Node.js的一些重要部分,我们将在后续章节中详细讨论。

Node.js概念

在哪里使用Node.js?

以下是 Node.js 证明自己是完美技术合作伙伴的领域。

  • I/O 绑定的应用程序
  • 数据流应用程序
  • 数据密集型实时应用程序 (DIRT)
  • 基于 JSON API 的应用程序
  • 单页应用程序

但是,不建议将 Node.js 用于 CPU 密集型应用程序。

Node.js 主要用于构建网络程序,例如 Web 服务器。但是,您可以构建不同类型的应用程序,例如命令行应用程序、Web 应用程序、实时聊天应用程序、REST API 等。

数以千计的 Node.js 开源库可用,其中大部分托管在 npm 网站上,npm 是 JavaScript 编程语言的包管理器。可以使用许多 Web 框架来加速应用程序的开发。一些流行的框架是 Express.js、Feathers.js、Koa.js、Sails.js、Meteor 等。

Atom、JetBrains、WebStorm、NetBeans 和 Visual Studio Code 等 IDE 的数量支持Node.js应用程序的开发。Google Cloud Platform 和 AWS Elastic Beanstalk 等云托管平台可用于托管Node.js应用程序。