Logo
Section 1 / 5

Node.js 简介

了解 Node.js 的概览。

导入

Node.js 简介

了解 Node.js 的概览。

欢迎进入本六部分系列课程的第一部分。在本章结束时,我们将达成以下目标:

  • 能够解释什么是 Node.js,以及它与浏览器的区别;
  • 理解 Node.js 中阻塞与非阻塞模式之间的差异;
  • 掌握如何使用 Node.js 的读取-求值-输出循环(REPL)环境;
  • 了解如何使用基本的 Node.js 调试工具。

Node.js 概述

Node.js 最初由程序员 Ryan Dahl 于 2009 年发布。

什么是 Node.js?

根据其官方描述,
Node.js® 是一个基于 Chrome 的 V8 JavaScript 引擎构建的 JavaScript 运行时环境。

Node.js 使得 JavaScript 可以脱离浏览器运行,可用于构建能够高效处理高并发请求的服务器端应用。

Node.js 具备良好的可移植性,可在多种操作系统上运行,包括 macOS、Windows、Linux 以及其他系统。同时,它是一个免费且开源的技术。

Node.js 使用 V8 JavaScript 引擎

JavaScript 引擎是一种将 JavaScript 代码编译为操作系统可执行的机器码的程序。

V8 是驱动 Node.js 的 JavaScript 引擎名称。该引擎由 Google 开发,自 2008 年起开源,目前也用于 Google Chrome 浏览器。V8 使用 C++ 编写。

使用 Node.js 的一大优势在于,它持续受益于 Google 对 V8 引擎每年性能优化的投入。

除了 V8,其他常见的 JavaScript 引擎还包括 SpiderMonkey(Firefox 使用)和 Chakra(Edge 使用)。

Node.js 与浏览器的对比

在 Node.js 出现之前,JavaScript 只能在浏览器中运行,主要用于实现浏览器交互功能(例如添加点击事件)。而 Node.js 让我们可以在服务器端编写 JavaScript,完成常见的服务端任务,如访问文件系统、连接数据库等。

如今,JavaScript 已成为最受欢迎的编程语言之一。如果开发者已经熟练掌握 JavaScript,那么 Node.js 提供了一个显著优势:可以使用同一种语言开发整个应用程序——前端和后端。

尽管 Node.js 和 Chrome 等浏览器都执行 JavaScript 并使用相同的 V8 引擎,但两者之间仍存在一些关键区别:

浏览器Node.js
浏览器可以访问 document 和 window 对象。Node.js 可以访问 http 和 fs 等对象。
global 对象指向 window。global 对象指向 Node.js 特有的模块和 API。
浏览器使用 ECMAScript 模块(import 和 export)。Node.js 使用 CommonJS 模块系统(require() 和 module.exports)。

虽然 Node.js 和浏览器共享许多标准的内置 JavaScript 功能(如 Array),但某些预定义对象仅存在于其中一个环境中。例如,Node.js 无法访问用于 DOM 操作和用户事件处理的 document 和 window 对象;相反,浏览器也无法使用 Node.js 提供的 http 和 fs 等 API,这些 API 分别用于搭建 Web 服务器和操作文件系统。

Node.js 和浏览器都有一个 global 全局对象。在浏览器中,global 实际上指向 window;而在 Node.js 中,global 对象暴露了一系列有用的模块、函数和字符串,可供我们在程序中直接使用。

Node.js 采用 CommonJS 模块系统,通过 require() 和 module.exports 实现不同文件间的代码共享。而在浏览器中,ECMAScript 模块标准(使用 import 和 export 语句)正逐步被支持。截至 2020 年 10 月,ECMAScript 模块在 Node.js 中仍属于实验性功能。

在开始之前

Node.js 中的不同模式