フロントエンドの目標

このセクションでは、GitLabフロントエンドが今後数年間でどのような_状態になることが望ましいかを_定義しました。

クラスターSPA

現在のところ、GitLabのほとんどはRailsアーキテクチャとRailsルーティングに従っています。つまり、ルートを変更するたびにページをリロードしなければなりません。その結果、読み込み時間が長くなってしまいます:

  • HAMLページのレンダリング;
  • Vueアプリケーションのマウント
  • これらのアプリケーションのデータの取得

理想的には、ユーザーがこの長いプロセスを経る回数を減らすべきです。これはGitLabをシングルページのアプリケーションに変換することで可能になりますが、大幅なリファクタリングが必要になり、短期的・中期的な目標としては達成できません。

現実的なゴールは、ユーザーフローを形成するページの_クラスターを_定義し、このクラ_スターを_Railsルーティングからクライアントサイドルーティングを持つシングルページアプリケーションに移行することです。こうすることで、HAMLから関連するすべてのコンテキストを一度だけロードし、ルートに応じてAPIからすべての追加データを取得することができます。クラスターの例は次のようなPagesです:

  • イシューリスト
  • イシューボード
  • イシュー詳細ページ
  • イシュー
  • イシュー編集

これらすべてが同じコンテキスト(プロジェクト・パス、現在のユーザーなど)を持っているため、イシュー固有のパラメータ(イシューiid)を使用して簡単に多くのデータを取得し、その結果をクライアントに保存することができます(同じイシューを開くために多くのAPIコールを必要としないように)。これは、イシューをナビゲートするためのスムーズなユーザー・エクスペリエンスにつながります。

クラスター間のナビゲーションについては、まだRailsルーティングに頼ることができます。このようなケースはクラスター内のナビゲーションよりも比較的少ないはずです。