Node.js 16.0 发布,这是一个用 JavaScript 运行网络应用程序的平台。 Node.js 16.0 被归类为长期支持分支,但只有在稳定后的 16.0 月份才会分配此状态。 Node.js 2023 将支持到 14.0 年 2023 月。 Node.js 12.0 之前的 LTS 分支的维护将持续到 2022 年 10.0 月,前年的 LTS 分支 10 的维护将持续到 XNUMX 年 XNUMX 月。 对 XNUMX LTS 分支的支持将在 XNUMX 天后停止。
主要改进:
- V8 引擎已更新至版本 9.0(Node.js 15 使用版本 8.6),它允许实现正则表达式的“索引”属性等功能(包括具有匹配组的开始和结束位置的数组) ,Node.js 16 .waitAsync(Atomics.wait的异步版本)中的Atomics方法,支持在顶级模块中使用await关键字。 在传递的参数数量与函数中定义的参数不对应的情况下,函数调用得到了加速。
- Timers Promises API 已经稳定,提供了一组替代函数来处理返回 Promise 对象作为输出的计时器,从而无需使用 util.promisify()。 从“计时器/承诺”导入{setTimeout}; 异步函数 run() { 等待 setTimeout(5000); console.log('你好,世界!'); } 跑步();
- 添加了 Web Crypto API 的实验性实现,旨在在 Web 应用程序端执行基本的加密操作,例如操作加密哈希、生成和验证数字签名、使用各种加密方法对数据进行编码和解码以及生成加密安全随机数。 该API还提供了生成和管理密钥的功能。
- N-API(用于开发附加组件的 API)已更新至版本 8。
- 已过渡到新版本的包管理器 NPM 7.10。
- 稳定了 AbortController 类的实现,该类基于 AbortController Web API,并允许在选定的基于 Promise 的 API 中取消信号。
- 对第三版 Source Map 格式的支持已经稳定,该格式用于将生成、处理或打包的模块与原始源代码进行比较。
- 为了与旧版 Web API 兼容,添加了 buffer.atob(data) 和 buffer.btoa(data) 方法。
- 配备 M1 ARM 芯片的新 Apple 设备的组装已经开始。
- 在平台上 Linux 编译器版本要求已提高至 GCC 8.3。
需要提醒的是,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 的超集,在 IOCP 系统上是 IOCP 的超集。 Windowslibeio 库用于创建线程池,并集成了 c-ares 以非阻塞模式执行 DNS 查询。所有阻塞系统调用都在线程池内执行,然后像信号处理程序一样,通过一个未命名的管道返回结果。JavaScript 执行由 Google 的 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});”,其中控制将立即传递给进一步的代码,查询结果将在数据到达时进行处理。
此外,值得注意的是,由 Node.js 创始人创立、旨在开发下一代 Deno 平台的 Deno 公司获得了 4.9 万美元的投资。 就其目的而言,Deno 与 Node.js 类似,但它试图消除 Node.js 架构中的概念性错误,并为用户提供更安全的环境。 值得注意的是,Deno 的业务解决方案将构建在完全开放的产品之上,具有单独付费功能的 Open Core 模式被认为对于 Deno 平台来说是不可接受的。
来源: opennet.ru
