このプロジェクトについて
Million.jsはnpmパッケージとして配布されるReactパフォーマンスツールです。Reactを置き換えるのではなく、Reactと並行して動作し、コンパイラと最適化された仮想DOM実装を提供します。このプロジェクトが掲げるアプローチは、リコンシリエーション中に完全な要素ツリーを比較することから離れ、変更された値に関連付けられたDOMノードを直接更新するコードを生成するというものです。
READMEではカウンターの例を用いてこれを説明しています。Reactは通常、コンポーネントのスナップショットをレンダリングし、前後のJSXツリーを差分比較しますが、Million.jsは概念的には、カウント値が変更された場合にのみ段落を更新するようなチェックを生成します。このプロジェクトは、これによってリコンシリエーションを線形のツリー走査から、対象を絞った定数時間の更新に変えると説明しています。Million.jsによってReactコンポーネントが最大70%高速化できると述べており、裏付けとなる結果としてjs-framework-benchmarkへのリンクを掲載しています。この性能数値はプロジェクトの主張であり、ここで独自に検証されたものではありません。
セットアップはMillion.js CLIによって自動化されることを意図しており、`npx million@latest`で実行できます。CLIはパッケージをインストールし、プロジェクトを設定します。ドキュメント、インタラクティブデモ、インストールヘルプ、Discordコミュニティ、イシュートラッカー、コントリビューションガイドへのリンクがREADMEから掲載されています。
リポジトリは`/packages`配下のモノレポとして構成されています。主なモジュールは以下のとおりです。
- `million`: コアとなる仮想DOM実装。
- `react`および`react-server`: React互換レイヤー。
- `compiler`: Million.jsをReactで使用するためのコンパイラ。
- `jsx-runtime`: Million.jsコア用のJSXランタイム。
- `types`: 共有TypeScript型定義。
READMEでは、パフォーマンス問題の発見と修正のための関連サービスであるMillion Lintと、ブロック仮想DOMの内部構造を説明するブログ記事へのリンクも掲載されています。Million.jsはMITライセンスであり、blockdom、Voby、ivi、Preact、React、Turboなどのプロジェクトをインスピレーションとしてクレジットしています。
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.