Node.js 是一个基于 Chrome V8 JavaScript 引擎的开源运行环境,用于开发服务器端和网络应用。Node.js 允许开发者使用 JavaScript 编写命令行工具和服务器端的应用程序,并且可以无缝地在从服务器到桌面应用再到移动设备的各种环境中运行。
Node.js 的核心原理包括:
-
事件驱动:
- Node.js 采用事件驱动模型,这意味着它在处理 I/O 操作时不会阻塞线程等待响应。相反,它会异步地执行这些操作,并通过回调函数或者事件通知结果。
-
单线程与多线程:
- Node.js 在主线程中执行 JavaScript 代码,这个线程负责处理所有非阻塞 I/O 请求。对于计算密集型任务或阻塞 I/O 操作,Node.js 可以创建额外的线程(例如 Worker 线程)来处理。
-
非阻塞 I/O:
- Node.js 设计为支持非阻塞 I/O 操作,这意味着 I/O 请求(如文件读写、网络通信等)可以在不等待响应的情况下发出。当操作完成时,Node.js 会通过回调函数通知结果,从而避免了长时间阻塞主线程。
-
事件循环:
- Node.js 的事件循环是其架构的核心部分。它负责监听已完成的 I/O 操作,并将控制权交还给相应的回调函数。事件循环管理着调用栈和异步回调队列。
-
异步 API:
- Node.js 提供了一组异步 API,允许开发者编写非阻塞代码。这些 API 包括文件系统操作、网络请求等。
-
模块化:
- Node.js 支持模块化编程,允许开发者组织和重用代码。Node.js 自带了许多内置模块,同时社区也提供了大量的第三方模块。
Node.js 的执行流程简述:
-
加载和编译:
- 当启动 Node.js 应用程序时,它会加载并编译 JavaScript 文件到可执行的字节码。
-
初始化事件循环:
- 初始化事件循环,准备处理事件和回调。
-
执行应用程序代码:
- 执行应用程序的主入口点,通常是
index.js
或app.js
这样的文件。
- 执行应用程序的主入口点,通常是
-
处理 I/O 操作:
- 对于 I/O 请求,Node.js 会将其传递给操作系统进行处理,并将回调添加到事件队列中。
-
事件循环处理:
- 事件循环检查是否有任何已完成的操作需要处理,并调用相应的回调函数。
-
结束:
- 当没有更多的事件或回调要处理时,事件循环结束,应用程序退出。
Node.js 的这种设计使得它非常适合构建高性能、可伸缩的网络应用程序和服务。
标签:Node,NodeJs,阻塞,笔记,js,学习,循环,事件,回调 From: https://www.cnblogs.com/PrintY/p/18324842