Node.js を強制終了してください! 新しい JS ランタイムは「すぐに実行可能」です。

始める前に、JavaScript ランタイムとは何か、そしてなぜその速度を気にする必要があるのか​​について簡単に説明しましょう。

JavaScript でストーリーを書き、誰かにそれを読み上げてもらう必要があると想像してください。JavaScript ランタイムはフレンドリーな「ナレーター」のように機能し、ストーリーに命を吹き込みます。JavaScript ストーリーを読み込んで実行する特殊な環境です。技術的に言えば、この「ナレーター」は、ランタイムの中核であり、コードの理解と実行を担当する JavaScript エンジンなどのコンポーネントで構成されます。

Bun はまったく新しい JavaScript ランタイムです。9 月 8 日、Bun1.0 が正式にリリースされ、安定した運用準備が整った状態に達したことが示されました。

Bun の開発者らは、Bun は Node.js のドロップイン代替として位置づけられており、「ツールの層」を排除することで複雑さと遅さを解消し、JavaScript 開発を簡素化することを目指していると述べています。

1. Node.js への挑戦: ランタイム、パッケージ化ツール、テスト フレームワークの統合

「Bun は、小さなスクリプトから完全なサーバーサイド レンダリング アプリケーションに至るまで、JavaScript と TypeScript の構築、テストの実行、デバッグを行うための完全なツールキットです」と作成者の Jarred Sumner 氏はビデオ デモンストレーションで述べました。

Node.js とは異なり、Bun は Apple の JavaScriptCore エンジンを使用し、Zig で構築されています。コードをさらに複雑にすることなく、アプリケーションを高速化するように設計されています。Bun チームによると、その主な利点は次のとおりです。

  • Bun を使用する場合、ノードは必要ありません。組み込みの監視モードがあります。Bun では、Node.js ツール (node、npx、nodemon、dotenv、cross-env など) が不要になります。
  • Bun は、tsc や babel などのトランスパイラーを置き換えることができる、.js、.ts、.cjs、.mjs、.jsx、.tsx ファイルなどのさまざまなファイルを実行できます。
  • Bun は、スナップショット テスト、コード カバレッジ、モックをサポートする Jest 互換のテスト ランナーです。したがって、追加の依存関係をインストールせずに単体テストを作成できます。
  • Bun は、「クラス最高」のパフォーマンスと esbuild 互換のプラグイン API を備えた JavaScript バンドラーでもあります。
  • Bun は npm と互換性のあるパッケージ マネージャーでもあり、yarn と npm が持つ使い慣れたコマンドをすべて備えています。
  • EcmaScript モジュールと CommonJS モジュール システムの両方をサポートします。

「代替品」であるという主張も開発者によって疑問視されていますが、上記の利点から、Bun がランタイム、パッケージング ツール、テスト フレームワーク、およびその他の機能を 1 つのツールに統合しようとしており、それによってツールの断片化を解決しようとしていることがわかります。開発効率の低下などの問題が発生します。

ただし、Bun が正式にリリースした 1.0 バージョンは、以前のベータ版とはまだ異なります。開発者の Jarred Sumner 氏は、Bun 1.0 のリリースで最も困難だったことの 1 つは、ベータ版の一部だったフロントエンド サーバーの削除だったと Twitter で共有しました。

サムナー氏は木曜日のローンチ後のTwitter Q&Aで、「Bunをもっとフロントエンド開発に向けたものにするためにもっと時間があればよかったと思う。それは悪いことではない。すでに使っているツールを使うことができる。だが私はそう思う」と語った。ランタイムをフロントエンド ビルド ツールと直接統合することは大きなチャンスだと今でも考えています。」

同氏は、ユーザーからのフィードバックではフロントエンドサーバーの削除に問題はなかったことが示されており、ソーシャルメディア上のニュースに対する反応はほとんどが肯定的だったと指摘した。リリースの翌日、Bun に関する話題はすべてそのスピードと使いやすさについてでした。

2. スピードのために生まれたが、スピードだけのためではない

Bun の最も印象的な点は、そのスピードです。Node.jsにあえて挑戦する理由は最大の自信にある。

生放送での Bun チームの紹介によると、Bun の書き込み速度は Node.js の 3 倍、ファイルの読み取り速度は Node.js の 3 倍であるとのことです。Bun は npm より 29 倍速くパッケージをインストールします。JavaScript テストでは、Jest より 13 倍速く、パッケージ化速度は esbuild より 1.75 倍高速です。

Bun が所属する開発会社 Oven のプロダクト マネージャーである Ashcon Partovi 氏は、特に Bun は npm run コマンドを Bun run に置き換えることができると述べ、npm が MacBook Pro でスクリプトの実行を開始するまでに約 150 ミリ秒かかります。 Bun の 30 ミリ秒とは対照的です。「Npm はかなり遅れを感じますが、Bun は瞬時に感じられます。」

Bun の競合相手は Node.js と Rust ベースの Deno です。ソフトウェア エンジニアの James Cornick は、Bun、Node.js、Deno の 3 つのランタイムを具体的に比較し、その結果、Bun のパフォーマンスが後者の 2 つよりも優れていることがわかりました。

「Zig を利用した Bun は、速度、パッケージング、テスト、Node.js パッケージとの互換性に重点を置いたオールインワンのランタイムとツールキットになることを目指しています」と Konik 氏は書いています。 、Node.js と Deno の両方よりも大幅に高速です。」

同氏は、Bun のメンテナーが、React を使用してサーバー側のページをレンダリングする HTTP ハンドラーを実行するサンプル ベンチマークを提供していることに注目しました。Bun は 1 秒あたり約 68,000 のリクエストを処理しますが、Deno と Node.js はそれぞれ 29,000 と 14,000 のリクエストを処理します。

Bun の初期バージョンを独自にテストした結果、Konik 氏は、Node.js が 1 秒あたり平均 21.29 クエリを処理したのに対し、Deno は平均 43.50 クエリを処理したことを発見しました。Bun は 1 秒あたり平均 81.37 クエリを処理します。

同時に、Konik は、Node.js、Deno、Bun の別の比較で、Bun が同時接続の処理が最も速く、1 秒あたりのリクエスト数も非常に多かった (たとえば、10 の場合) ことも発見しました。同時接続 以下では、Bun は 1 秒あたり 110,000 のリクエストを達成できますが、Node.js は 1 秒あたり 60,000 のリクエストを達成でき、Deno は 1 秒あたり 67,000 のリクエストを達成できます。

もちろん、ランニング時に考慮すべき要素はスピードだけではありません。

開発者の markthree も、それぞれのランタイムに利点があると指摘しました。「Bun はよりパフォーマンスを重視しているため、現在のパフォーマンスの点では、他の 2 つのランタイムよりもはるかに優れています。私の知る限り、Deno はセキュリティの代名詞です。」コミュニティのパッケージを、自分のシステムに何かが行われていることを心配することなく、安全に使用できます。ノードは現在、パフォーマンスとセキュリティにも力を入れ始めています。全体として、競争は良いことであり、助けになります。 JS ランタイムの進化。進化。」

3. Linux バージョンと macOS バージョンは準備ができていますが、Windows バージョンはまだ「実験段階」です。

一般的に言って、多くの人はまだ駆け出しのバンを歓迎しています。

ノードベースの開発環境にはさまざまなツールのコレクションが含まれることが多いため、管理が困難ですが、Bun と Deno は両方ともこれを簡素化します。Bun は Deno よりも Node.js および CommonJS との互換性を重視しており、これは多くの開発者にとってプラスです。

しかし、Bunにはまだ改善の余地がたくさんあります。たとえば、Bun チームは macOS と Linux 向けに本番環境に対応したローカル バージョンを提供していますが、チームは Windows バージョンを適切に動作させることにまだ取り組んでいます。このカンファレンスでは、Bun for Windows のバージョンは「非常に実験的」と呼ばれていました。これまでのところ、Bun は Mac、Linux、および Windows Subsystem for Linux (WSL) でのみ動作します。

ドキュメントによると、Windows バージョンは現在 Bun ランタイムのみをサポートしており、「パッケージ マネージャー、テスト ランナー、およびパッケージャーは、より安定するまで無効になっています。」

4. Node.js ではなく Bun に切り替える必要がありますか?

Bun は JavaScript の世界の新世代として、興味深い側面を示しています。Node.js にはない優れた組み込み機能がいくつかあり、実際に非常に高速です。次のプロジェクトに何を使用するかを考えている場合は、Bun を試してみるのも悪くありません。

いくつかの JS ランタイムから選択する方法については、開発者の Shalini Tewari の見解が非常に代表的です。

「Node.js、Bun、Deno はすべてサーバーサイド JS ランタイムですが、目的はまったく異なります。Bun と Node.js のどちらを選択するかは、プロジェクトのニーズによって異なります。」

「スピードとシンプルで軽量なエクスペリエンスが必要な場合は、Bun を使用してください。より広範なエコシステムとコミュニティのサポートが必要な場合は、Node.js が確実な選択肢です。両方のメソッドを使用して、JavaScript アプリケーションを強力かつ効率的にすることもできます。」 」

おすすめ

転載: blog.csdn.net/Z__7Gk/article/details/132977929