发布 ,用于在 JavaScript 中运行网络应用程序的平台。 Node.js 14.0 是一个长期支持分支,但只有在稳定后的 14.0 月份才会分配此状态。 将支持 Node.js XNUMX 直到 2023 年 12.0 月。 Node.js 2022 之前的 LTS 分支的维护将持续到 10.0 年 2021 月,前年的 LTS 分支 13 的维护将持续到 XNUMX 年 XNUMX 月。 对 XNUMX.x staging 分支的支持将于今年 XNUMX 月结束。
主 :
- 即时生成或某些事件发生时生成的能力已稳定 ,它显示有助于诊断问题的事件,例如崩溃、性能下降、内存泄漏、CPU 负载过重、意外错误输出等。
- 添加了实验性 API 支持 通过 AsyncLocalStorage 类的实现,该类可用于根据回调调用和承诺创建带有处理程序的异步状态。 AsyncLocalStorage 允许您在处理 Web 请求时存储数据,这让人想起其他语言中的线程本地存储。
- 删除了加载时有关实验性功能的警告消息 使用导入和导出语句连接和导出。 与此同时,ESM 模块本身的实施仍处于实验阶段。
- V8引擎更新至版本 (, , ),其中包括新的性能优化和功能,例如新的逻辑串联运算符“??” (如果左操作数为 NULL 或未定义,则返回右操作数,反之亦然),“?.”运算符用于一次性检查整个属性或调用链(例如,“db?.user?.name?.length”,无需初步检查)、用于获取本地化名称的 Intl.DisplayName 方法等。
- 对 Streams API 进行了修订,旨在提高 Streams API 的一致性并消除 Node.js 基本部分的行为差异。 例如,http.OutgoingMessage 的行为接近于stream.Writable,而net.Socket 则类似于stream.Duplex。 autoDestroy 选项默认设置为“true”,这意味着完成后调用“_destroy”。
- 添加了实验性 API 支持 (),提供与操作系统直接交互的软件接口(用于处理文件、套接字等的 POSIX API)。
- 增加了以下要求 компиляторов и платформ: macOS 10.13 (High Sierra), GCC 6, .
让我们回想一下,Node.js 平台既可用于 Web 应用程序的服务器端支持,也可用于创建普通的客户端和服务器网络程序。 为了扩展 Node.js 应用程序的功能,大量 ,其中您可以找到实现服务器和客户端 HTTP、SMTP、XMPP、DNS、FTP、IMAP、POP3 的模块、用于与各种 Web 框架集成的模块、WebSocket 和 Ajax 处理程序、DBMS 连接器(MySQL、PostgreSQL、SQLite) 、 MongoDB )、模板引擎、CSS 引擎、加密算法和授权系统(OAuth)的实现、XML 解析器。
为了处理大量并行请求,Node.js 使用基于非阻塞事件处理和定义回调处理程序的异步代码执行模型。 支持的多路复用连接方法包括 epoll、kqueue、/dev/poll 和 select。 该库用于复用连接 ,这是一个上层建筑 在 Unix 系统中以及通过 IOCP 进行操作 Windows使用库来创建线程池。 ,集成了用于以非阻塞模式执行 DNS 查询的 。 所有导致阻塞的系统调用都在线程池中执行,然后像信号处理程序一样,通过无名管道将其工作结果传回。 通过使用 Google 开发的引擎确保 JavaScript 代码的执行 (此外,微软正在开发带有 Chakra-Core 引擎的 Node.js 版本)。
从本质上讲,Node.js 与框架类似 , , и Tcl 中的事件,但 Node.js 中的事件循环对开发人员是隐藏的,类似于浏览器中运行的 Web 应用程序中的事件处理。 在为 Node.js 编写应用程序时,有必要考虑事件驱动编程的细节,例如,不要执行“var result = db.query(“select..”);” 在等待工作完成以及后续处理结果的过程中,Node.js 采用了异步执行的原理,即代码转换为“db.query(“select..”, function (result) {结果处理});”,其中控制权将立即传递给后续代码,并且查询结果将在数据到达时进行处理。 。
来源: opennet.ru
