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

Node.js 18.0 发布,这是一个用 JavaScript 运行网络应用程序的平台。 Node.js 18.0 被归类为长期支持分支,但只有在稳定后的 18 月份才会分配此状态。 Node.js 2025.x 将支持到 16 年 2024 月。 Node.js 14.x 之前的 LTS 分支的维护将持续到 2023 年 12 月,前年的 LTS 分支 30.x 的维护将持续到 17 年 1 月。 XNUMX.x LTS 分支将于 XNUMX 月 XNUMX 日停止,Node.js XNUMX.x staging 分支将于 XNUMX 月 XNUMX 日停止。

主要改进:

  • V8 引擎已更新至版本 10.1,在 Chromium 101 中使用。与 Node.js 17.9.0 版本相比,现在支持 findLast 和 findLastIndex 方法等功能,用于查找相对于末尾的元素一个数组和 Intl.supportedValuesOf 函数。 改进了 Intl.Locale API。 类字段和私有方法的初始化已加速。
  • 默认情况下启用实验性 fetch() API,旨在通过网络加载资源。 该实现基于 HTTP/1.1 undici 客户端的代码,并尽可能接近浏览器中提供的类似 API。 这包括对用于操作 HTTP 请求和响应标头的 FormData、标头、请求和响应接口的支持。 const res = wait fetch('https://nodejs.org/api/documentation.json'); if (res.ok) { const data = wait res.json(); 控制台.log(数据); }
  • 添加了 Web Streams API 的实验性实现,提供对通过网络接收的数据流的访问。 该 API 使您可以添加自己的处理程序,以便在信息通过网络到达时处理数据,而无需等待整个文件下载完毕。 Node.js 中现在可用的对象包括 ReadableStream*、TransformStream*、WritableStream*、TextEncoderStream、TextDecoderStream、 CompressionStream 和 DecompressionStream。
  • Blob API 已移至稳定版,允许您封装不可变的原始数据,以便在不同的工作线程中安全使用。
  • BroadcastChannel API 已变得稳定,允许您以“一个发送者 - 多个接收者”格式以异步模式组织消息交换。
  • 添加了实验模块节点:测试,用于在 JavaScript 中创建和运行测试,以 TAP(测试任何协议)格式返回结果。
  • 提供了针对 Red Hat Enterprise Linux (RHEL) 8 和基于 Glibc 2.28+ 的其他发行版(包括 Debian 10 和 Ubuntu 20.04)以及 macOS 10.15+ 的现成程序集的生成。 由于 V8 引擎构建存在问题,Windows 32 位构建的创建已暂时停止。
  • 提供了一个实验性选项,用于使用在启动时初始化的用户选择的组件来构建 Node.js 可执行文件。 为了定义启动组件,“--node-snapshot-main”选项已添加到配置构建脚本中,例如“./configure —node-snapshot-main=marked.js; 名称节点”

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

添加评论