Node.js浅入门 | 青训营笔记
这是我参与「第五届青训营 」伴学笔记创作活动的的第15天。
Node.js并不是一种前端开发技术,它更多地被用于后端开发。然而,由于Node.js具有高效、易学、易用的特点,因此它在前端开发中也有着广泛的应用。
什么是Node.js
- Node.js 是一个开源和跨平台的 JavaScript 运行时环境。
- Node.js 在浏览器之外运行 V8 JavaScript 引擎(Google Chrome 的内核)。
- 它使得JavaScript可以编写后端程序,让其实现其他后端语言能实现的绝大部分功能。
在前端开发中,Node.js可以用于构建工具链,如:
-
前端自动化:Node.js可以用于构建前端自动化流程,以提高开发效率。
-
前端工具:Node.js可以开发前端工具,如编译器、打包工具等,以支持前端开发。
-
构建系统:Node.js可以用于构建系统,它可以帮助开发人员编译、部署前端代码。
总的来说,Node.js对前端开发具有重要的支持作用,它可以帮助开发人员提高效率,实现更高效的前端开发。
Node.js的应用场景
-
前端工程化
- Bundle(构建):webpack,vite,esbuild,parcel
- Uglify(压缩):uglifyjs
- Transpile(语法转换):bablejs,typescript
- 其他语言加入竞争:esbuild,parcel,prisma
- 现状:难以替代
-
Web服务端应用(即后端服务)
- 学习曲线平缓,开发效率较高
- 运行效率接近常见的编译语言
- 社区生态丰富工具链成熟(npm,V8 inspector)
- 与前端结合的场景会有优势(SSR)
- 现状:竞争激烈,Node.js有自己独特的优势
-
Electron跨端桌面应用
- 商业应用:vscode,slack,discord,zoom
- 大型公司内的效率工具
- 现状:大部分场景在选型的时候都值得考虑
-
Node.js在字节
- BFF应用、SSR应用,距离:Modern.js
- 服务端应用:头条搜索,西瓜视频,懂车帝
- Electron应用:飞连,飞书
- 每年新增1000+Node.js应用
Node.js运行时结构
Node.js运行时结构是一个事件驱动、非阻塞I/O的平台,它通过Google V8 JavaScript引擎执行JavaScript代码,并使用内置的C++代码实现了许多功能。
Node.js运行时结构的主要组成部分如下:
- 引擎:用于执行JavaScript代码的核心组件,通常是Google V8 JavaScript引擎。
- 事件循环:Node.js采用事件驱动、非阻塞I/O模型,事件循环是Node.js运行时结构的核心。它不断监听事件队列,并执行对应的回调函数。
- 文件系统:Node.js提供了一个文件系统模块,可以让开发人员读写文件。
- 网络:Node.js提供了一个网络模块,可以让开发人员创建服务器,处理HTTP请求。
- 模块系统:Node.js采用CommonJS规范,提供了一个模块系统,可以让开发人员编写和组织代码。
- 特点
- 事件驱动:Node.js采用事件驱动、非阻塞I/O的模型,事件循环是Node.js运行时结构的核心。它不断监听事件队列,并执行对应的回调函数。
- 非阻塞I/O:Node.js中的所有I/O操作都是非阻塞的,可以有效避免请求的阻塞,提高系统的吞吐量。
- 轻量级:Node.js运行时结构很小,不占用大量系统资源,可以有效提高系统的效率。
- 高性能:Node.js运行时结构通过V8 JavaScript引擎执行代码,执行速度很快,可以有效提高应用程序的性能。
- 模块化:Node.js采用CommonJS规范,提供了一个模块系统,可以让开发人员编写和组织代码。
- 跨平台:Node.js运行时结构可以在多种平台上运行,包括Windows、Linux、Mac OS X等,可以让开发人员轻松实现跨平台开发。
安装node.js
-
Mac,Linux推荐使用nvm。多版本管理
-
Windows nvm4w 或官方安装包
-
安装慢,安装失败的情况,设置安装源
NVM_NODEJS_ORG_MIRROR=https://npmmirror.com/mirrors/node nvm install 16