BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース "Node.js 22"がリリース:ESMモジュールとWeb APIのサポートが強化

"Node.js 22"がリリース:ESMモジュールとWeb APIのサポートが強化

原文リンク(2024-05-05)

Node.jsチームはこの程、"Node.js 22"をリリースした。主な機能には、JavaScriptネイティブ・モジュールやウェブAPIとの互換性の向上とパフォーマンスの改善が含まれている。

Node.js 21はすでに主要なJavaScriptモジュールAPIをサポートしており、その中にはimport.metaオブジェクトも含まれていた。具体的には、Node.js 21はimport.meta.dirnameimport.meta.filenameの両方をサポートしている。Node.js 22では、JavaScriptモジュール(ESM)グラフのsynchronousrequireのサポートが追加された。リリースノートに詳細が記載されている。

experimental-require-moduleが有効で、require()によってロードされるECMAScriptモジュールが以下の要件を満たしています。

  • ESモジュールとして "type "で明示的にマークされています。もっとも近いpackage.jsonの "type": "module "フィールド、または.mjs拡張子で、ESモジュールとして明示的にマークされています。
  • 完全に同期的です(トップレベルのawaitを含みません)。

require()は、要求されたモジュールをESモジュールとしてロードし、モジュール名空間オブジェクトを返します。この場合、dynamicimport()と似ていますが、同期的に実行され、名前空間オブジェクトを直接返します。将来的には、フラグなしでrequire(esm)をデフォルトで有効にする予定です。

CoderOasisの技術ブロガーは、この機能を説明する簡単なコードサンプルを提供した

// ES module: math.js export function add(a,b) {return a + b;  }   // CommonJS module: app.js  const {add} = require('./math.js');  console.log(add(2, 3)); // Output:5   

Node.js 21は、NavigatorAPIの部分的なサポートと、ブラウザと互換性のあるWebsocketクライアントの実験的なサポートをすでに備えていた。Node.js22では、Websocketのサポートは実験的なままだが、デフォルトになった。

Node.js 22は、パフォーマンス面でも継続的な進歩を示している。

Node.js 22はV8 JavaScriptエンジンを12.4に更新し、Maglevと呼ばれる最適化JITコンパイラ(既存のSparkplugコンパイラと、Turbofanコンパイラの間にリリース)を活用している。12.4アップデートには、WebAssembly Garbage CollectionやIterator Helpersといった機能が含まれている。また、ストリームのハイ・ウォーター・マークが16KiBから64KiBに増加したことにより、Node.jsストリームのパフォーマンスが向上した。これによりメモリ使用量がわずかに増加するため、メモリに敏感な環境では、setDefaultHighWaterMark() によってデフォルト値を調整できる。 AbortSignalインスタンスの生成効率を改善することにより、fetch()API とテスト・ランナーのパフォーマンスが向上した。

Node.jsは、Open JS FoundationによるMITライセンスの下で利用可能なオープン・ソース・ソフトウェアである。Node.jsのコントリビューション・ガイドライン行動規範にて、コントリビューションとフィードバックが奨励されている。

作者について

この記事に星をつける

おすすめ度
スタイル

特集コンテンツ一覧

BT