Node.js学习指南:规划与理解Node.js

发表时间: 2020-08-26 10:43

第 1 部分:认识 Node.js

  • Node.js 是什么?Node.js 是一个 JavaScript 运行时环境,它移植了 Google Chrome 浏览器的 V8 引擎,通常被用作 JavaScript 代码在浏览器之外的宿主环境,这大大扩展了 JavaScript 的使用范围,使其成为了一款近乎全能型的编程语言
  • Node.js 能做什么?

Node.js 的特性

Node.js 保留了 JavaScript 在浏览器端中所使用的大部分 API,Node.js 的作者 Ryan Dahl 并没有改变这门语言本身的任何执行特性,它的编程模型依旧将基于作用域和原型链这些概念,这让 Node.js 这个 JavaScript 的运行环境具备了以下这些与众不同的特性:

  • 单一线程
    Node.js 沿用了 JavaScript 单一线程的执行特性。即在 Node.js 中,JavaScript 的执行线程与其他线程之间同样也是无法共享状态的。单一线程的最大好处是不用像多线程编程那样处理很容易产生 bug 的同步问题,它从根本上杜绝了死锁问题,也避免了线程上下文交换所带来的性能上的开销。当然了,单一线程的执行方式也有它自身的弱点,譬如,它无法充分发挥多核处理器的性能、一个错误就会导致整个程序崩溃,以及当某一任务执行大量计算时会因长期占用处理器而影响其他异步 I/O 的执行。
  • 事件驱动
    在 Web 开发领域,JavaScript 如今在浏览器端正承担了越来越重要的角色,其事件驱动的编程模型也逐渐深入人心。当然了,这种编程模型虽然具有轻量级、松耦合等优势,但在多个异步任务的场景下,由于程序中的各个事件是彼此独立的,它们之间的协作就成为了一个需要我们费心解决的问题。
  • 异步编程
    在 Node.js 中,大部分 I/O 操作都是以异步调用的方式来进行的。Node.js 的开发者们在其底层构建了许多异步 I/O 的 API,包括文件读取、网络请求等。这样一来,我们就可以很自然地在语言层面上实现并行的 I/O 操作,使得程序中的每个调用都无须等待之前的 I/O 调用结束,从而提高程序的执行效率。例如,如果我们想要读取两个相互不依赖的文件,如果采用的是异步 I/O,其耗费的时间只取决于读取较慢的那个文件,而如果采用同步 I/O 的话,其耗时就是两个文件的读取时间之和了,异步操作模型带来的优势是显而易见的。当然了,由于异步编程也会导致代码的编写顺序与其具体执行顺序的不一致,对于很多习惯同步思路编程的人来说,阅读和维护这样的代码会是一个不小的挑战。

Node.js 的安装

Node.js 的安装主要有两种方式,通常在 Windows 和 MacOS 下,我们会采用下载.msi和.pkg格式的安装包,使用安装向导来进行安装。而在 Linux/Unix 这一类系统中,我们则往往会采用 apt 和 yum 这样的包管理器来安装。这两种方式都不复杂,下面以 Windows 和 Ubuntu 为代表,简单介绍一下这两种安装方法。

使用安装包

如果想要在 Windows 下安装 Node.js,首先要打开 Node.js 的官网https://nodejs.org/,然后选择一个合适的版本。在其官网的首页中,我们会看到有 LTS 和 Current 两种版本可供下载。其中,LTS 版即受到长期支持的版本,其组件通常都经历过了充分的测试,比较稳定,适合于正式的生产开发。而 Current 版本则是最新的版本,通常包含了最新纳入的新特性,比较适合想对 Node.js 本身进行研究的朋友。

待下载完.msi格式的安装包之后,我们就可以打开安装包启动安装向导了。在安装的开始阶段,安装向导会要求我们设置一些选项,大多数时候只需采用默认选项,直接点击「Next」即可。只是在组件选择的页面中,需要注意一下,如果你对 Node.js 的组件并不熟悉,最好选择安装全部组件。另外,请记得点开下图中那个「add path」选项前面的+号,这样安装程序就会主动把 Node.js 和 NPM 这两个模块的命令路径添加到系统环境变量里,这对初学者来说是非常方便的。

待一切选项设置完成之后,我们就可以点击下面的「Install」即可完成安装。

如果一切顺利,我们在 Windows 中打开cmd终端,在其中输入node -v命令并回车之后,应该就会看到相关的版本信息。

使用包管理器

在 Ubuntu 这种类 Linux/Unix 操作系统中,我们安装软件往往都会选择使用 apt 这一类的包管理器,简单而方便,依次执行以下命令即可:

  sudo apt update sudo apt install nodejs # 最新 的Node.js 已经集成了 npm,所以某些情况下是无需单独安装 npm 的,这具体还要取决于你使用的软件源。 sudo apt install npm

除此之外,我们还能安装 n 管理器来管理 Node.js 的版本,其安装命令如下:

sudo npm install -g n

该工具的具体使用方式如下:

sudo n lts            # 长期支持sudo n stable         # 稳定版sudo n latest         # 最新版sudo n 12.4.0         # 直接指定版本sudo n                # 使用上下键切换已有版本

同样的,如果一切顺利,我们打开命令行终端,并在其中输入node -v命令并回车之后,应该就会看到相关的版本信息。