新聞 | iThome ( ) • 2024-04-25 17:01

开源跨平台JavaScript执行环境Node.js推出第22主要版本,这个新版本加入require()对ECMAScript(ES)模组的支援,更新V8 JavaScript引擎,同时也预设启用内建的WebSocket实作。Node.js 22目前以Current版本提供,在10月时则转为长期支援版本。

Node.js 22版本新增了require()对ES模组的支援,这代表著Node.js在模组系统互通性的改进。这项实验性功能允许开发者在使用CommonJS模组系统的同时,透过require()来整合ES模组。开发团队指出,该功能行为类似动态import(),但是具有同步操作的便利性,对于需要严格确认相依项目载入顺序的应用来说特别重要。

Node.js计划未来将require()对同步ES模组的支援设为预设行为,以进一步提升Node.js应用的模组互通性,同时也是推动JavaScript标准化与强化开发者体验的积极作为。

而在这个新版本中,另一个值得注意的更新是预设启用与浏览器相容的WebSocket实作。WebSocket是一种网路通讯协定,能够开启一个持久连接,使得伺服器和客户端可以随时发送资料给对方,这种方式适合需要即时交换资料的应用,像是聊天室与游戏等。

在过去的Node.js版本,要使用WebSocket需要仰赖外部第三方函式库,但是在Node.js 22中,内建WebSocket客户端实作已经正式启用,代表开发者可以直接使用这个功能,不需要安装额外的模组。这样的改进简化了开发过程,并且减少对外部相依项目的依赖。

Node.js所使用的V8引擎更新至12.4版本,新增功能包括WebAssembly垃圾回收、Array.fromAsync和Set方法等。而V8也使用了一个新的编译器,现在于Node.js更新中预设启用,该编译器能够提升JavaScript执行效率,特别像是打包工具、格式化程式或各种建置脚本等短时效CLI程式,皆有助于改善执行效能。

开发团队这次更新也提高了Node.js中的High Water Mark,从原本的16 KB提高到64 KB,这代表Node.js串流可以在记忆体中储存更多的资料。High Water Mark是Node.js串流的重要配置参数,其指定串流在内部缓冲取可以储存多少资料,是一个用于平衡效能和记忆体使用的重要参数。

High Water Mark参数从16 KB提高至64 KB,虽然代表著有助于提升资料处理速度,但是也意味Node.js应用可能会使用更多记忆体来快取资料,对于记忆体资源有限的环境,开发者可依需求明确设定setDefaultHighWaterMark,以限制串流缓冲大小。