服务器端 JavaScript 平台 Node.js 19.0 可用

Node.js 19.0 发布,这是一个用 JavaScript 运行网络应用程序的平台。 Node.js 19 是常规支持分支,更新截止日期为 2023 年 18 月。 未来几天,Node.js 2025 分支的稳定工作将完成,该分支将获得 LTS 状态并支持到 16.0 年 2023 月。 Node.js 14.0 之前的 LTS 分支的维护将持续到 2023 年 XNUMX 月,前年的 LTS 分支 XNUMX 的维护将持续到 XNUMX 年 XNUMX 月。

主要改进:

  • V8 引擎已更新至版本 10.7,在 Chromium 107 中使用。与 Node.js 18 分支相比,引擎的变化包括第三版 Intl.NumberFormat API 的实现,其中添加了新函数 formatRange ()、formatRangeToParts() 和 selectRange()、集合分组、舍入和设置精度的新选项、将字符串解释为十进制数字的能力。 包含的依赖项 llhttp 8.1.0 和 npm 8.19.2 也已更新。
  • 提出了一个实验性的“node -watch”命令,并实现了监视模式,确保当导入的文件发生更改时重新启动进程(例如,如果执行“node -watch index.js”,则该进程将被重新启动)当index.js更改时自动重新启动)。
  • 对于所有传出 HTTP/HTTPS 连接,启用了对 HTTP 1.1 Keep-Alive 机制的支持,该机制使连接保持打开状态一段时间,以处理同一连接中的多个 HTTP 请求。 Keep-Alive 有望提高吞吐量和性能。 默认情况下,连接打开超时设置为 5 秒。 HTTP 客户端实现中添加了对解析服务器响应中的 Keep-Alive HTTP 标头的支持,并且 Node.js HTTP 服务器实现中添加了使用 Keep-Alive 自动断开不活动客户端的连接。
  • WebCrypto API 已转移到稳定类别,但使用 Ed25519、Ed448、X25519 和 X448 算法的函数除外。 要访问 WebCrypto 模块,您现在可以使用 globalThis.crypto 或 require('node:crypto').webcrypto。
  • 对 DTrace、SystemTap 和 ETW(Windows 事件跟踪)跟踪工具的支持已被删除,由于在缺乏适当的支持计划的情况下保持其最新状态的复杂性,对其维护被认为是不合适的。

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。 对于连接多路复用,使用了 libuv 库,它是 Unix 系统上的 libev 和 Windows 上的 IOCP 的附加组件。 使用libeio库创建线程池,集成c-ares以非阻塞方式进行DNS查询。 所有导致阻塞的系统调用都在线程池内部执行,然后像信号处理程序一样,通过一个未命名的管道(pipe)将它们的工作结果传回。 JavaScript 代码的执行是通过使用由谷歌开发的 V8 引擎提供的(此外,微软正在开发一个带有 Chakra-Core 引擎的 Node.js 版本)。

Node.js 的核心类似于 Perl AnyEvent、Ruby Event Machine、Python Twisted 框架和 Tcl 事件实现,但 Node.js 中的事件循环对开发人员是隐藏的,类似于运行中的 Web 应用程序中的事件处理在浏览器中。 在为 node.js 编写应用程序时,您需要考虑事件驱动编程的细节,例如,而不是执行“var result = db.query("select..");” 等待工作完成和后续处理结果,Node.js采用了异步执行的原理,即代码被转换为“db.query(“select..”, function (result) {result processing});”,其中控制将立即传递给进一步的代码,查询结果将在数据到达时进行处理。

来源: opennet.ru

添加评论