Skip to main content

Node.js 简介

· 6 min read
IceyBlackTea

Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.

主体内容 2021-02-09

一句话理解

Node.js® 是一个基于 Chrome V8 引擎 的 JavaScript 运行时环境。

这是官网的介绍,可以说是非常简洁概括的了。

我是这样理解这句话的:

  • JavaScript - 使用 Javascript 语言编写相关程序,继承了 JavaScript 绝大部分的优缺点;

  • 运行时环境 - Javascript 的运行环境不再是通常的浏览器,这使得其可以作为服务端程序工作;

  • 基于 Chrome V8 引擎 - Node.js 的工作特点与 V8 相关,V8 引擎保证了其性能。

node architecture

Node.js 架构示意图


主要特点

Node.js 的最大的特点有:

  • 单线程
  • 异步、非阻塞 I/O
  • 事件驱动

Node.js 被设计用于高性能 Web 服务。

由于一些历史原因,JavaScript 被用于前端开发,采用单线程执行。

这也使得 JavaScript 与异步、非阻塞 I/O、事件驱动的工作方式契合,而这几点同时也是高性能 Web 服务所需的。

再配合具有高性能的 JavaScript 引擎 V8,Node.js 在实际工作中有着非常不错的性能表现。

需要注意的是,Node.js 的单线程并不是真的完全的单线程,而是指 JavaScript 执行是单线程。


适用场景

Node.js 一般用于提供高性能 Web 服务,作为服务端工作。

Node.js 在设计上的特点决定了其适用于:

  • 高并发,占用资源少
  • I/O 密集型

相反的,其缺点有:

  • 可靠性低,一旦某部分程序出错终止,整个应用崩溃
  • 不适合 CPU 密集型应用,较难利用多核 CPU

简单来说,Node.js 适合“多而易”,而不是“大又难”。

如今 Node.js 在国内外的许多网站都得到了应用。


包管理工具 npm

npm 是适用于 Node.js 的包管理工具。

类似于 Python 的 pip。

JavaScript 开发人员众多,随着 Node.js 的流行,第三方包的数量也与日俱增,发布与分享需要工具与平台。

由于 Node.js 采用模块化管理维护代码,通过 npm 能够非常方便下载第三方代码包或程序,并实现对各个包的版本控制,使用也非常简单。

npm 进一步推广了 Node.js,现在 npm 会随着 Node.js 一起安装。


对使用者

由于 Node.js 使用 JavaScript 来编写程序,入门上手非常容易;

前后端统一使用 JavaScript,有利于前端开发者理解后端工作逻辑;

社区活跃完善,第三方包数量众多,使用 npm 能够很好的提升开发效率;

Node.js 开发轻便快速,运行资源需求低,适合简单需求的小团队项目,也适合一人进行全栈开发。

不过,JavaScript 的许多缺点也被 Node.js 继承,如:debug 比较麻烦,单线程、异步等特点与其他后端语言在设计与实现上有一定区别,等等···


最后

我自己接触到 Node.js 是在大三上学期,购买服务器后,想弄一个自己的网站玩玩。

因为只想弄静态 HTML 页面写点东西,就查了哪种后端最方便,最后选了 Node.js。

Node.js 真的非常简单,比如实现一个基本的静态HTML网站,使用 Express.js 框架的话,十几行也就结束了;也可以使用 http-server 直接运行。

接触 Node.js 让我快速入门了后端开发,并进行了一些实践,再配合今年学习的 React,我感觉自己算是学会了最简单的前后端分离的全栈开发。

从我自己的角度来说,Node.js 简单又好玩,所以我写这些单纯就是自来水推广~

有机会还是希望能多写点的,之后再补充吧。

如果有其他问题,可以在我的 github.io 项目的 issue 留言,欢迎提问~

感谢观看!Thank you for watching!