Node.js是一个基于Chrome V8 JavaScript引擎构建的开源、跨平台JavaScript运行环境。它允许开发者在服务器端运行JavaScript代码,从而实现前后端统一的开发语言。Node.js具有事件驱动、非阻塞I/O模型,使其非常适合于构建高性能的网络应用。
Node.js不是编程语言,Node.js是一个JS运行时,类似于Java的JRE(Java Runtime Environment),它提供了API环境、运行环境,能够让JS代码可以在服务端运行。换句话说,JS是脚本语言,脚本语言都需要一个解析器才能运行,对于HTML中的JS,浏览器充当了这个解析器,而对于需要独立运行的JS,Node.js就是一个解析器。同时Node.js还提供了可以对文件系统、网络等进行操作的API,允许使用JS和一系列的模块(Node.js大部分基本模块都是用JavaScript语言编写)来编写服务端应用和网络相关的应用,如web服务器。在Node.js出现之前,JavaScript通常作为客户端程序设计语言使用,以JS写出的程序往往在用户的浏览器上运行,Node.js的出现使得JS能够用于服务端编程。
优点
-
高性能和可扩展性:Node.js采用事件驱动和非阻塞I/O模型,这使得它能够处理大量并发连接,而不需要为每个连接创建一个新的线程。V8引擎的高效性能使得Node.js能够快速执行JavaScript代码。
-
统一的开发语言:使用JavaScript进行前后端开发,减少了开发者需要学习的语言数量,简化了开发过程。
-
丰富的生态系统:Node.js拥有庞大的包管理系统npm,提供了大量的模块和库供开发者使用,极大地提高了开发效率。
-
轻量级和灵活性:Node.js的模块系统使得应用程序可以按需加载模块,保持轻量级,并且容易进行扩展。
缺点
-
单线程限制:尽管Node.js通过异步编程来处理并发,但它本质上是单线程的,这可能会在处理CPU密集型任务时造成瓶颈。
-
回调地狱:由于Node.js大量使用回调函数,代码可能会变得难以维护和阅读,尤其是在嵌套多个回调时。
-
不适合CPU密集型应用:Node.js更适合I/O密集型应用,而不是需要大量计算的任务。
使用场景
-
实时应用:例如聊天应用和在线游戏,Node.js的事件驱动模型非常适合处理实时数据。
-
数据流应用:如视频流或音频流应用,Node.js可以有效处理数据流。
-
API服务:Node.js可以快速构建RESTful API,因为它能够高效处理HTTP请求。
-
微服务架构:由于其轻量级和快速启动特性,Node.js非常适合构建微服务。
-
服务器端应用:适用于需要处理大量并发请求的服务器端应用,如代理服务器。
脚本语言是一种编程语言,通常用于编写短小的程序(脚本),以自动执行任务、处理数据或控制其他软件和系统。这些语言通常具有以下特点:
-
解释执行:脚本语言一般是解释执行的,而不是编译执行的。这意味着代码在需要的时候由解释器逐行执行,而不是提前编译为机器代码。
-
简单易用:脚本语言通常具有简洁的语法,易于学习和使用,适合快速开发。
-
动态类型:多数脚本语言是动态类型的,变量类型可以在运行时决定。
-
适合集成:脚本语言通常用于集成和控制其他软件应用,比如系统工具、数据库、网页浏览器等。
npm是Node.js的默认包管理工具,用于安装、管理和共享JavaScript库和应用程序:
-
安装和管理包:开发者可以使用npm来安装和管理项目依赖的第三方包。
-
版本管理:npm可以管理包的版本,确保项目使用正确的版本。
-
发布和共享:开发者可以通过npm发布自己的包,并与社区共享。
-
脚本运行:npm可以运行自定义脚本,帮助开发者自动化各种任务。
npm通常与Node.js一起安装,当你安装Node.js时,npm也会被安装在系统中
node 环境的安装,官网下在安装包,直接装在你的电脑操作系统内部,需要通过 命令行 来打开node
npm是Node.js生态系统的重要组成部分,提供了一个庞大的开源模块库,帮助开发者快速构建和扩展应用。
npm的包库包含了数百万个包,涵盖了各种功能和工具,极大地丰富了Node.js的开发能力。npm通过package.json
文件管理项目的依赖关系,开发者可以定义项目需要的包及其版本。
Node.js和npm的结合使得JavaScript开发不仅限于浏览器端,也可以在服务器端进行,从而实现全栈开发。npm作为Node.js的包管理工具,极大地简化了模块的安装和管理过程,促进了Node.js社区的发展和壮大。
node版本:
1.Node.js的版本发布遵循固定的时间表,通常每年会发布两个主要版本,一个在4月份作为Current版本,另一个在10月份作为LTS版本。每个版本的支持周期如下:
-
Current版本:从发布之日起的6个月内处于Current状态,然后转为LTS版本。
-
LTS版本(偶数通常是LTS):从转为LTS版本开始,有18个月的活跃支持期,随后进入12个月的维护支持期。
-
Maintenance(维护版):维护版是已经过了活跃支持期的LTS版本,主要接收安全更新和关键修复。
2.nvm(Node Version Manager):一个流行的Node.js版本管理工具,允许开发者在同一系统上安装和切换不同版本的Node.js。
用户可以轻松切换到所需的Node.js版本,无需重新安装,通过nvm,开发者可以在不同项目中使用不同的Node.js版本和npm包,不会相互干扰。
nvm安装:curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
安装最新版本的Node.js:npm install node
安装特定版本的Node.js:npm install 14.17.0
切换到特定版本:nvm use 14.17.0
设置默认版本:nvm alias default 14.17.0
列出所有已安装的Node.js版本:nvm ls
卸载指定版本:nvm uninstall 14.17.0