サーバーサイド JavaScript Node.js 16.0 リリース

JavaScript でネットワーク アプリケーションを実行するためのプラットフォームである Node.js 16.0 がリリースされました。 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 の Atomics メソッド .waitAsync (Atomics.wait の非同期バージョン)、トップレベル モジュールでの await キーワードの使用のサポート。 渡される引数の数が関数で定義されたパラメータに対応しない状況での関数呼び出しが高速化されました。
  • Timers Promises API が安定し、出力として Promise オブジェクトを返すタイマーを操作するための代替関数セットが提供されます。これにより、util.promisify() を使用する必要がなくなります。 import { setTimeout } から 'タイマー/プロミス'; async 関数 run() { await setTimeout(5000); console.log('Hello, World!'); } 走る();
  • Web Crypto API の実験的実装が追加されました。これは、暗号ハッシュの操作、デジタル署名の生成と検証、さまざまな暗号化方式を使用したデータのエンコードとデコード、暗号的に安全な暗号化の生成など、Web アプリケーション側で基本的な暗号操作を実行するように設計されています。乱数。 API は、キーを生成および管理するための関数も提供します。
  • N-API(アドオン開発用API)がバージョン8にアップデートされました。
  • パッケージ マネージャー NPM 7.10 の新しいリリースへの移行が行われました。
  • AbortController クラスの実装が安定しました。これは AbortController Web API に基づいており、選択した Promise ベースの API でシグナルをキャンセルできるようにします。
  • 生成、処理、またはパッケージ化されたモジュールを元のソース コードと比較するために使用されるソース マップ形式の XNUMX 番目のバージョンのサポートが安定しました。
  • 従来の 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 です。 接続の多重化には、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) {結果処理});」に変換され、制御が即座に次のコードに渡され、データが到着するとクエリ結果が処理されます。

さらに、次世代 Deno プラットフォームを開発するために Node.js の作成者によって設立された Deno 社が 4.9 万ドルの投資を受けていることも注目に値します。 Deno の目的は Node.js に似ていますが、Node.js アーキテクチャで生じた概念的な誤りを排除し、より安全な環境をユーザーに提供しようとしています。 Deno のビジネス ソリューションは完全にオープンな製品に基づいて構築されており、別個の有料機能を備えたオープン コア モデルは Deno プラットフォームには受け入れられないと認識されていることに注意してください。

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

コメントを追加します