Skip to content

Tuvix.jsとは?

Tuvix.jsは、独立してデプロイ可能なパーツで構成されるスケーラブルなフロントエンドアプリケーションを構築するための、軽量でフレームワーク非依存のマイクロフロントエンドオーケストレーターです。

課題

フロントエンドが成長するにつれ、モノリシックなシングルページアプリケーションは以下のような問題を抱えます:

  • 複数のチーム間でのスケーリングが困難
  • ビルドとデプロイが遅い - 1つの変更がすべてを再ビルドする
  • 単一のフレームワークやバージョンに固定される
  • 個別にテストや理解をすることが困難

ソリューション:マイクロフロントエンド

マイクロフロントエンドは、マイクロサービスの原則をフロントエンドに適用します。各マイクロアプリは:

  • 独立して開発 - 別のコードベース、別のチーム
  • 独立してデプロイ - 独自のCI/CDパイプライン
  • フレームワーク非依存 - あるチームはReact、別のチームはVue、また別のチームはSvelteを使用

Tuvix.jsはシェルを提供します - 実行時にすべてのマイクロアプリをロード、マウント、調整する薄いオーケストレーション層です。

アーキテクチャ

┌─────────────────────────────────────────────┐
│                Tuvix.js Shell               │
│                                             │
│  ┌────────────┐  ┌──────────┐  ┌────────┐  │
│  │ Orchestrator│  │  Router  │  │ Loader │  │
│  └────────────┘  └──────────┘  └────────┘  │
│                                             │
│  ┌─────────┐  ┌────────┐  ┌──────────────┐ │
│  │  React  │  │  Vue   │  │   Angular    │ │
│  │ マイクロ │  │ マイクロ│  │   マイクロ   │ │
│  │  アプリ  │  │  アプリ │  │    アプリ    │ │
│  └─────────┘  └────────┘  └──────────────┘ │
└─────────────────────────────────────────────┘

主要概念

概念説明
Shellホストアプリケーション - マイクロアプリをロードして調整
Orchestratorマイクロアプリの登録とライフサイクルを管理するコアエンジン
Micro App独立してデプロイされるフロントエンドアプリケーション
EntryマイクロアプリのJavaScriptバンドルURL
Lifecycle各マイクロアプリが実装するmount、unmount、updateフック
Event Busマイクロアプリ間の型付きpub/subブリッジ
Sandbox衝突を防ぐためのCSS + JS分離

比較

機能Tuvix.jssingle-spaModule Federation
ランタイム依存なし
Event Bus組み込み
CSS Sandbox
SSRサポート部分的
TypeScript-first部分的
フレームワークバインディングReact, Vue, Svelte, AngularReact, Vue任意

次のステップ

はじめに