当前位置:首页 > 科技  > 软件

Node.js 21 正式发布,赶紧来看看有哪些更新吧!

来源: 责编: 时间:2023-10-18 17:59:19 196观看
导读版本说明这两个版本有什么区别呢?Node.js 21 适合在特定环境下进行早期功能测试,而 Node.js 20 LTS 则适用于生产部署。Node.js 21 将在未来 6 个月内成为“当前”版本,直到 2024 年 4 月。以下是完整的 Node.js 发布计

COb28资讯网——每日最新资讯28at.com

版本说明

这两个版本有什么区别呢?Node.js 21 适合在特定环境下进行早期功能测试,而 Node.js 20 LTS 则适用于生产部署。Node.js 21 将在未来 6 个月内成为“当前”版本,直到 2024 年 4 月。以下是完整的 Node.js 发布计划。COb28资讯网——每日最新资讯28at.com

COb28资讯网——每日最新资讯28at.com

COb28资讯网——每日最新资讯28at.com

Node.js 的发布可以分为三个阶段,奇数版本号的发布线路不会被提升为 LTS 版本,也就不会经历“Active LTS”和“Maintenance”阶段。COb28资讯网——每日最新资讯28at.com

  • Current(当前):包含大部分进入 nodejs/node 主分支的非主要(非破坏性)变更。
  • Active LTS(活跃长期支持):新功能、错误修复和经LTS团队审核后被确定适合该发布线路且稳定的更新。
  • Maintenance(维护):关键错误修复和安全更新。新功能可能会根据LTS团队的判断加入。通常只在新功能支持迁移到后续发布线路的情况下才会添加。

如果你想要尝试最新的Node.js功能,那么 Node.js 21 是个很好的测试平台,它提供了即将到来的新特性的先期体验。Node.js 的发布计划特别关注这一点。但是如果正在准备或已经在生产环境中使用 Node.js,则应该选择较稳定的版本,如Node.js 20 和 18 LTS。这些版本可以保证可靠性和稳定性,并且会在较长时间内得到支持和维护。COb28资讯网——每日最新资讯28at.com

Node.js 21 的亮点包括将 V8 JavaScript 引擎升级到 11.8 版本,稳定的WebStreams和 fetch功能,一个用于更改模块默认值的新实验性标志(--experimental-default-type),对测试运行器的许多更新,内置 WebSocket 客户端等!COb28资讯网——每日最新资讯28at.com

主要更新

稳定的WebStreams和 fetch功能

Node.js 21 对fetch模块和WebStreams进行了重要更新,并将它们标记为稳定版本。COb28资讯网——每日最新资讯28at.com

这一变化影响到了WebStreams、FormData、Headers、Request、Response和fetch等模块。COb28资讯网——每日最新资讯28at.com

内置 WebSocket 客户端

这个版本新增了一个实验性的浏览器兼容的 WebSocket 实现,可以通过使用参数--experimental-websocket来开启。但是,像所有实验性功能一样,它可能会随时发生变化。COb28资讯网——每日最新资讯28at.com

V8 11.8

按照惯例,Node.js 21 中包含了新版本的 V8 引擎(更新到版本11.8,该版本是 Chromium 118 的一部分),带来了性能的改进和新的语言功能,包括:COb28资讯网——每日最新资讯28at.com

  • 数组分组
  • ArrayBuffer.prototype.transfer
  • 扩展的 WebAssembly 常量表达式

Node.js 测试运行器支持通配符

在 Node.js 21 中,测试运行器引入了对通配符表达式的支持。通配符是一种模式语法,可以用来匹配多个文件路径。在测试过程中,可以使用通配符表达式来指定要运行的测试文件。COb28资讯网——每日最新资讯28at.com

通过使用通配符表达式,可以更方便地选择和执行特定类型的测试文件,而不需要一个个地指定它们的路径。例如,如果想运行所有具有.test.js文件扩展名的文件,无论这些文件位于哪个目录下,可以使用类似于node --test **/*.test.js的命令。这样,测试运行器会自动匹配并执行符合该模式的测试文件。COb28资讯网——每日最新资讯28at.com

ESM:支持改变模块默认值

experimental-default-type 是 Node.js 的一个实验性特性,可以用来切换默认的模块系统。这意味着开发者可以使用不同的模块类型,并在需要时进行切换,使得 Node.js 应用更加灵活,能够应对不同的场景。COb28资讯网——每日最新资讯28at.com

标志 --experimental-default-type=module 用于将模块类型切换成 ES 模块。对于已经明确定义为 ES 模块或 CommonJS 的代码,例如在 package.json "type" 字段中或文件扩展名为 .mjs/.cjs 或 --input-type 标志等,不会受到影响。在使用 --experimental-default-type=module 标志时,原本默认解析为 CommonJS 的代码将被解析成 ES 模块。COb28资讯网——每日最新资讯28at.com

此外,Node.js 团队还在探索使用检测 ES 模块语法作为Node.js识别文件是否为ES模块的一种方式,目标是最终找到一种支持ES模块语法的方法,并尽可能减少变更。COb28资讯网——每日最新资讯28at.com

模块自定义钩子 globalPreload 已被移除,改用 register 和 initialize

模块自定义钩子 globalPreload 已被移除。取而代之的是,使用 register 方法将数据从应用线程发送到自定义钩子,并使用 initialize 钩子在线程之间建立通信通道。COb28资讯网——每日最新资讯28at.com

fs.writeFile 函数添加 flush 选项

在写入文件时,有可能数据并不会立即刷新到永久存储中。这可能导致后续读取操作看到旧的数据。该版本为 fs.writeFile 系列函数添加了一个 flush 选项,该选项可以在成功写入操作结束时强制刷新数据到永久存储。COb28资讯网——每日最新资讯28at.com

性能

性能是一个运行时的重要属性,@nodejs/performance 团队在过去一年中一直努力改进 URL、fetch、streams、node:fs 和 HTTP 等方面的性能。COb28资讯网——每日最新资讯28at.com

Streams

Node.js 流团队不断优化可写流和可读流。在这个版本中,通过移除冗余检查、利用位图以及以更高效的方式安排回调来进一步优化流操作。COb28资讯网——每日最新资讯28at.com

HTTP

在此之前,当向分块响应写入数据时,无论响应是否处于 corked 状态,Node.js 都会为每个 .write(...)调用创建一个单独的数据块。这会在客户端和服务端都产生不必要的开销。COb28资讯网——每日最新资讯28at.com

该更新通过在取消 corked 状态时,为所有 write(...) 调用创建一个单一的数据块来解决了这一问题。COb28资讯网——每日最新资讯28at.com

考虑以下基于 Transfer-Encoding 文档的示例:COb28资讯网——每日最新资讯28at.com

res.cork();res.write('Mozilla');res.write(' Developer Network');res.uncork();

在每个数据块的开头,您需要以十六进制格式添加当前数据块的长度,然后跟着 '/r/n',再接着是数据块本身,最后再加上另一个 '/r/n'。终止块是正常的数据块,唯一的例外是它的长度为零。COb28资讯网——每日最新资讯28at.com

最终生成的响应流为:COb28资讯网——每日最新资讯28at.com

HTTP/1.1 200 OKContent-Type: text/plainTransfer-Encoding: chunked7/r/nMozilla/r/n18/r/n Developer Network/r/n0/r/n/r/n

在 Node.js 21 中,当取消 corked 状态时,所有数据块都会合并成一个单独的数据块,从而减少了很多不必要的开销。COb28资讯网——每日最新资讯28at.com

HTTP/1.1 200 OKContent-Type: text/plainTransfer-Encoding: chunked25/r/nMozilla Developer Network/r/n0/r/n/r/n

llhttp 9.1.2 强制严格模式执行

  • 在以前的 Node.js 版本中,默认情况下未启用严格模式。在 Node.js 21 中,强制执行了以前包含在严格模式中的所有设置,提高了代码的可靠性和安全性。
  • 现在,标头后面必须有 /r/n(之前允许单独使用 /r)。此外,数据块后必须有 /r/n,以确保一致的数据处理。
  • 在解析带有 Connection: close 标头的消息后不再允许传输数据。这一变化增强了协议遵从性并改善了连接处理。

为适应特定的用例,引入了--insecure-http-parser 标志。该选项允许用户禁用上述更改,并保持与以前的解析行为的向后兼容性。COb28资讯网——每日最新资讯28at.com

这些更新旨在增强整个系统的稳定性,并改善 Node.js 应用的数据处理一致性。鼓励开发人员审查其代码库并相应地调整其实现,以确保与最新版本的无缝集成。COb28资讯网——每日最新资讯28at.com

navigator 对象集成

在 Node.js 21 中,引入了全局 navigator 对象,增强了 Web 的互操作性。现在,可以通过 navigator.hardwareConcurrency 访问硬件并发信息。COb28资讯网——每日最新资讯28at.com

本文链接://www.dmpip.com//www.dmpip.com/showinfo-26-14011-0.htmlNode.js 21 正式发布,赶紧来看看有哪些更新吧!

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 现在就可以使用的 20 个 JavaScript 技巧和窍门

下一篇: Java并发编程模式:探索不同的线程安全实现方式

标签:
  • 热门焦点
  • Redmi Buds 4开箱简评:才199还有降噪 可以无脑入

    Redmi Buds 4开箱简评:才199还有降噪 可以无脑入

    在上个月举办的Redmi Note11T Pro系列新机发布会上,除了两款手机新品之外,Redmi还带来了两款TWS真无线蓝牙耳机产品,Redmi Buds 4和Redmi Buds 4 Pro,此前我们在Redmi Note11T
  • 5月安卓手机好评榜:魅族20 Pro夺冠

    5月安卓手机好评榜:魅族20 Pro夺冠

    性能榜和性价比榜之后,我们来看最后的安卓手机好评榜,数据来源安兔兔评测,收集时间2023年5月1日至5月31日,仅限国内市场。第一名:魅族20 Pro好评率:97.50%不得不感慨魅族老品牌还
  • 线程通讯的三种方法!通俗易懂

    线程通讯的三种方法!通俗易懂

    线程通信是指多个线程之间通过某种机制进行协调和交互,例如,线程等待和通知机制就是线程通讯的主要手段之一。 在 Java 中,线程等待和通知的实现手段有以下几种方式:Object 类下
  • CSS单标签实现转转logo

    CSS单标签实现转转logo

    转转品牌升级后更新了全新的Logo,今天我们用纯CSS来实现转转的新Logo,为了有一定的挑战性,这里我们只使用一个标签实现,将最大化的使用CSS能力完成Logo的绘制与动画效果。新logo
  • 一年经验在二线城市面试后端的经验分享

    一年经验在二线城市面试后端的经验分享

    忠告这篇文章只适合2年内工作经验、甚至没有工作经验的朋友阅读。如果你是2年以上工作经验,请果断划走,对你没啥帮助~主人公这篇文章内容来自 「升职加薪」星球星友 的投稿,坐
  • 重估百度丨“晚熟”的百度云,能等到春天吗?

    重估百度丨“晚熟”的百度云,能等到春天吗?

    ©自象限原创作者|程心排版|王喻可2016年7月13日,百度云计算战略发布会在北京举行,宣告着百度智能云的正式启程。彼时的会场座无虚席,甚至排队排到了门外,在场的所有人几乎都
  • 慕岩炮轰抖音,百合网今何在?

    慕岩炮轰抖音,百合网今何在?

    来源:价值研究所 作者:Hernanderz“难道就因为自己的一个产品牛逼了,从客服到总裁,都不愿意正视自己产品和运营上的问题,选择逃避了吗?”这一番话,出自百合网联合创
  • 本地生活这块肥肉,拼多多也想吃一口

    本地生活这块肥肉,拼多多也想吃一口

    出品/壹览商业 作者/李彦编辑/木鱼拼多多也看上本地生活这块蛋糕了。近期,拼多多在App首页“充值中心”入口上线了本机生活界面。壹览商业发现,该界面目前主要
  • 小米MIX Fold 3下月亮相:今年唯一无短板的全能折叠屏

    小米MIX Fold 3下月亮相:今年唯一无短板的全能折叠屏

    这段时间以来,包括三星、一加、荣耀等等有不少品牌旗下的最新折叠屏旗舰都有新的进展,其中荣耀、三星都已陆续发布了最新的折叠屏旗舰,尤其号荣耀Magi
Top
Baidu
map