概述

Node.js发布于2009年5月,由Ryan Dahl开发,是一个基于 Chrome V8引擎的 JavaScript 运行环境,使用了一个事件驱动、非阻塞式I/O模型,让 JavaScript 运行在服务端的开发平台,它让 JavaScript 成为与 PHP、Python、Perl、Ruby等服务端语言平起平坐的脚本语言。

Node.js 是一个基于 V8 JavaScript 引擎的 JavaScript 运行时环境,基于 V8 引擎来执行 JavaScript 的代码,但是不仅仅只有 V8 引擎:

  • V8 可以嵌入到任何 C ++应用程序中,无论是 Chrome 还是 Node.js,事实上都是嵌入了 V8 引擎来执行 JavaScript 代码
  • 但是在 Chrome 浏览器中,还需要解析、渲染 HTML、CSS 等相关渲染引擎,另外还需要提供支持浏览器操作的 API、浏览器自己的事件循环等
  • 在 Node.js 中我们也需要进行一些额外的操作,比如文件系统读/写、网络 IO、加密、压缩解压文件等操作

Node 架构

Node 与浏览器的区别:

Node 架构

  • 编写的 JavaScript 代码会经过 V8 引擎,再通过 Node.js 的 Bindings,将任务放到 Libuv 的事件循环中
  • libuv(Unicorn Velociraptor—独角伶盗龙)是使用 C 语言编写的库
  • libuv 提供了事件循环、文件系统读写、网络 IO、线程池等等内容

应用

  • 应用一:目前前端开发的库都是以 node 包的形式进行管理;
  • 应用二:npm、yarn、pnpm 工具成为前端开发使用最多的工具;
  • 应用三:越来越多的公司使用 Node.js 作为 web 服务器开发、中间件、代理服务器;
  • 应用四:大量项目需要借助 Node.js 完成前后端渲染的同构应用;
  • 应用五:资深前端工程师需要为项目编写脚本工具(前端工程师编写脚本通常会使用 JavaScript,而不是 Python 或者 shell);
  • 应用六:很多企业在使用Electron来开发桌面应用程序;

版本管理工具

nvm:Node Version Manager

常用命令:

  • pnvm install <version | latest> 安装最新的 node 版本
  • pnvm list 展示目前安装的所有版本
  • pnvm use < version >切换版本