服务器端 JavaScript Node.js 16.0 发布

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 和 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});”,其中控制将立即传递给进一步的代码,查询结果将在数据到达时进行处理。

此外,值得注意的是,由 Node.js 创始人创立、旨在开发下一代 Deno 平台的 Deno 公司获得了 4.9 万美元的投资。 就其目的而言,Deno 与 Node.js 类似,但它试图消除 Node.js 架构中的概念性错误,并为用户提供更安全的环境。 值得注意的是,Deno 的业务解决方案将构建在完全开放的产品之上,具有单独付费功能的 Open Core 模式被认为对于 Deno 平台来说是不可接受的。

来源: opennet.ru

添加评论