サーバーサイド JavaScript プラットフォーム Node.js 18.0 が利用可能

JavaScript でネットワーク アプリケーションを実行するためのプラットフォームである Node.js 18.0 がリリースされました。 Node.js 18.0 は長期サポート ブランチとして分類されますが、このステータスは安定化後の 18 月にのみ割り当てられます。 Node.js 2025.x は 16 年 2024 月までサポートされます。 Node.js 14.x の以前の LTS ブランチのメンテナンスは 2023 年 12 月まで、前回の LTS ブランチ 30.x の前年のメンテナンスは 17 年 1 月まで続きます。 XNUMX.x LTS ブランチは XNUMX 月 XNUMX 日に廃止され、Node.js XNUMX.x ステージング ブランチは XNUMX 月 XNUMX 日に廃止されます。

主な改善点:

  • V8 エンジンは、Chromium 10.1 で使用されるバージョン 101 に更新されました。Node.js の 17.9.0 リリースと比較して、ノードの末尾を基準にして要素を検索するための findLast メソッドや findLastIndex メソッドなどの機能がサポートされるようになりました。配列と Intl.supportedValuesOf 関数。 改善された国際ロケール API。 クラスフィールドとプライベートメソッドの初期化が高速化されました。
  • 実験的な fetch() API はデフォルトで有効になっており、ネットワーク経由でリソースを読み込むように設計されています。 この実装は HTTP/1.1 undici クライアントのコードに基づいており、ブラウザで提供される同様の API に可能な限り近いものになっています。 これには、HTTP リクエスト ヘッダーとレスポンス ヘッダーを操作するための FormData、Headers、Request、Response インターフェイスのサポートが含まれます。 const res = await fetch('https://nodejs.org/api/documentation.json'); if (res.ok) { const data = await res.json(); コンソール.ログ(データ); }
  • Web Streams API の実験的な実装が追加され、ネットワーク経由で受信したデータ ストリームへのアクセスが提供されます。 API を使用すると、ファイル全体がダウンロードされるのを待たずに、ネットワーク経由で情報が到着したときにデータを操作する独自のハンドラーを追加できます。 Node.js で現在使用できるオブジェクトには、ReadableStream*、TransformStream*、WritableStream*、TextEncoderStream、TextDecoderStream、CompressionStream、および DecompressionStream が含まれます。
  • Blob API は安定版に移行され、不変の生データをカプセル化してさまざまなワーカー スレッドで安全に使用できるようになりました。
  • BroadcastChannel API が安定し、「XNUMX 人の送信者 - 多数の受信者」形式の非同期モードでメッセージの交換を整理できるようになりました。
  • TAP (Test Anything Protocol) 形式で結果を返すテストを JavaScript で作成および実行するための実験的モジュール ノード:test を追加しました。
  • Red Hat Enterprise Linux (RHEL) 8 および Glibc 2.28 以降に基づくその他のディストリビューション (Debian 10 および Ubuntu 20.04 を含む)、および macOS 10.15 以降用の既製アセンブリの生成が提供されます。 V8 エンジン ビルドに問題があるため、Windows 用の 32 ビット ビルドの作成が一時的に停止されました。
  • 起動時に初期化されるユーザーが選択したコンポーネントを使用して Node.js 実行可能ファイルを構築する実験的なオプションを提供しました。 開始コンポーネントを定義するために、「--node-snapshot-main」オプションが構成ビルド スクリプトに追加されました。たとえば、「./configure —node-snapshot-main=marked.js;」です。 名前ノード」

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 です。 接続の多重化には、Unix システム上の libev および Windows 上の IOCP のアドオンである libuv ライブラリが使用されます。 libeio ライブラリはスレッド プールの作成に使用され、c-ares はノンブロッキング モードで DNS クエリを実行するために統合されています。 ブロッキングを引き起こすすべてのシステム コールはスレッド プール内で実行され、シグナル ハンドラーと同様に、名前のないパイプ (パイプ) を介して作業の結果を転送します。 JavaScript コードの実行は、Google が開発した V8 エンジンを使用して提供されます (さらに、Microsoft は 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) {結果処理});」に変換され、制御が即座に次のコードに渡され、データが到着するとクエリ結果が処理されます。

出所: オープンネット.ru

コメントを追加します