Node.js - 介绍
什么是 Node.js?
Node.js 是一个基于 Google Chrome 的 JavaScript 引擎(V8 Engine)的服务器端运行时环境。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 Foundation 通过 Linux Foundation 的协作项目计划,现在负责 Node.js 的分布式开发。
Node.js 的特性
以下是一些使 Node.js 成为软件架构师首选的重要特性。
异步和事件驱动 − Node.js 库的所有 API 都是异步的,即非阻塞。这本质上意味着基于 Node.js 的服务器永远不会等待 API 返回数据。服务器在调用 API 后会立即转向下一个 API,而 Node.js 的事件通知机制帮助服务器从之前的 API 调用中获取响应。
非常快 − 由于基于 Google Chrome 的 V8 JavaScript Engine 构建,Node.js 库在代码执行方面非常快速。
单线程但高度可扩展 − Node.js 使用带有事件循环的单线程模型。事件机制使服务器能够以非阻塞方式响应,并使服务器高度可扩展,与传统服务器不同,后者创建有限的线程来处理请求。Node.js 使用单线程程序,同一程序可以为比传统服务器(如 Apache HTTP Server)多得多的请求提供服务。
无缓冲 − Node.js 应用程序从不缓冲任何数据。这些应用程序只是以块的形式输出数据。
许可证 − Node.js 采用 MIT 许可证发布。
下图展示了 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 等。
多种 IDE 如 Atom、JetBrains WebStorm、NetBeans 和 Visual Studio Code 支持 Node.js 应用程序的开发。云托管平台如 Google Cloud Platform 和 AWS Elastic Beanstalk 可用于托管 Node.js 应用程序。