Vize

ベーパーモード

Vapor Mode は、あまりにも狭く説明しやすいです。

簡単に言えば、より直接的なきめの細かいパスと少ない仮想 DOM オーバーヘッドを使用して Vue コンポーネントをレンダリングします。

それは本当ですが、もっと興味深いツールの問題が抜け落ちています。

コンパイラがより直接的になると、コンパイラの表面がより重要になります。

蒸気が重要な理由

従来の Vue レンダリングには、強力で成熟したメンタル モデルがあります。

  • テンプレートをコンパイルしてレンダリング関数にします
  • 仮想ノードの作成
  • 差分ダイナミック領域
  • DOM にパッチを適用する

このモデルは柔軟性があり、実戦でテストされています。

Vapor は、コンパイラーがリアクティブ UI のより直接的な表現を生成できるようになったら何が起こるかを尋ねます。仮想 DOM を中央のランタイム抽象化として扱う代わりに、コンパイラーは、反応性を DOM 更新自体に近づける操作を発行できます。

これにより、実行時の汎用性からコンパイル時の精度へとプレッシャーが移ります。

Vize にとって、これは興味深いことです。なぜなら、Vize は、Vue ツールチェーンが何かを出力する前に SFC を深く理解する必要があるという考えに基づいて構築されているからです。

異なる種類のコンパイラーの責任

コンパイラの出力がより直接的になると、間違いがより顕著になります。

コンパイラは次のことを認識する必要があります。

  • どのバインディングがリアクティブであるか
  • どの DOM 操作が安定しているか
  • どの式にゲッターが必要か
  • どの動的プロパティにパスを更新する必要があるか
  • どのスロットとコンポーネントが実行時境界を必要とするか
  • どのテンプレート スコープがループ、ブランチ、スロットに対してローカルであるか

仮想 DOM モデルでは、ある程度の不確実性は実行時の差分分析によって吸収できます。

より直接的な Vapor スタイルのモデルでは、コンパイラーがより多くの意図を伝えます。つまり、分析の品質がより重要になります。ソースマッピングの方が重要です。スナップショットの範囲の方が重要です。

Vize はまさにこのような問題を探求するために構築されています。

ファーストクラスのバックエンドとしての Vapor

Vize のアーキテクチャは、コンパイラー出力モードを無関係な実装ではなく、関連するバックエンドとして扱います。

同じ SFC 構造とテンプレート分析で以下を提供できるはずです。

  • DOM コンパイラの出力
  • SSRコンパイラ出力
  • Vapor コンパイラ出力
  • 構成がサポートされている、またはサポートされていない理由を説明する診断

Vapor が切り離された特別なケースになるべきではないため、これは重要です。

Vapor サポートが DOM および SSR サポートと同じツールチェーン モデル内にある場合、Vize は出力を比較し、スナップショットを再利用し、モード間で診断の一貫性を高めることができます。

デバッグ画面の変更

Vapor モードでは、デバッグ エクスペリエンスも変わります。

出力がより直接的な場合、開発者は次の点に自信が必要になります。

  • 生成された操作順序
  • リアクティブな依存関係の境界
  • イベントリスナーの配置
  • コンポーネントプロパティの更新セマンティクス
  • ブランチとループのクリーンアップ動作
  • 水分補給または SSR の互換性(該当する場合)

これは実行時の問題だけではありません。それはツールに関する懸念です。

優れた Vapor ツールチェーンは、次の答えに役立ちます。

  • コンパイラは何が静的だと考えましたか?
  • 何がダイナミックだと思いましたか?
  • 特定の更新パスはどこから来たのでしょうか?
  • この生成された操作を生成したソース式はどれですか?
  • この構成がフォールバックまたは失敗したのはなぜですか?

ここで、Vize の静的分析とスナップショットを多用したテストのアプローチが役立ちます。

セマンティクスを失わないパフォーマンス

Vapor はパフォーマンス指向ですが、Vue セマンティクスを犠牲にしてパフォーマンスを実現することはできません。

ユーザーは、より高速なパスを使用するためだけに 2 番目のテンプレート言語を覚える必要はありません。最良の結果は、コンパイラーが Vue コードを十分に理解して、直接レンダリングを自然に行えるようになることです。

それには次のことが必要です。

  • 通常の Vue の期待に対する互換性テスト
  • 現実世界の備品
  • サポートされていないパターンの正確な診断
  • 慎重なソースマッピング
  • おもちゃの例だけでなく、大規模なアプリケーションを含むベンチマーク

目標は「何としてでも蒸気を飛ばす」ことではありません。

目標は、暗黙的にサポートするサポートが少ないためではなく、より多くのことを理解できるため高速なコンパイラ パスです。

これが Vize に適合する理由

Vize はまだ実験段階です。だからこそ、Vapor は自然な領域なのです。

独立したツールチェーンは以下を探索できます。

  • 代替コンパイラ出力形状
  • より厳密な診断
  • より高速なスナップショット
  • 直接的な DOM 操作モデリング
  • タイプ認識テンプレート分析との統合
  • コンパイラの選択に関する AI に面した説明

公式エコシステムには安定性が必要です。 Vize はより速く行動し、積極的にテストし、公共の場で学習することができます。

それが正しい関係です。

Vapor Mode は Vize の単なるチェックボックスではありません。これは、統合された Vue ツールチェーンのアイデア全体に対するストレス テストです。

パーサー、アナライザー、コンパイラー、診断、スナップショット、および現実世界のフィクスチャーがすべて揃っている場合、Vapor は実行時の最適化以上のものになります。

これは、ツールチェーンが Vue を深く理解しており、別の未来を生み出すことができるという証拠になります。