「Photino.Blazor - ルーティング」の版間の差分

ナビゲーションに移動 検索に移動
(Wiki がページ「Photino.NET - ルーティング」を「Photino.Blazor - ルーティング」に、リダイレクトを残さずに移動しました)
 
1行目: 1行目:
== 概要 ==
== 概要 ==
Photino.NETは、デスクトップアプリケーションのための軽量なフレームワークであり、そのルーティングシステムもシンプルながら効果的な設計となっている。<br>
Photino.Blazorにおけるルーティングの基本的な仕組みは、通常のBlazorアプリケーションと同様、コンポーネントベースのルーティングを採用している。<br>
ルーティングシステムは、URLパスとコンポーネントを紐付け、ユーザの画面遷移を管理する。<br>
<br>
<br>
基本的なルーティングの仕組みとして、Photino.NETではシングルページアプリケーション (SPA) のような形式でルーティングを実装する。<br>
実装方法として、<code>@page</code>ディレクティブを使用する。<br>
メインウインドウにおいて、JavaScriptを使用してコンテンツの切り替えを行う。<br>
これは、Razorコンポーネントファイルの先頭に記述して、そのコンポーネントがどのURLパスで表示されるかを定義する。<br>
<br>
<br>
一般的に、ルーティングの実装方法として、以下に示すようなアプローチを取る。<br>
<syntaxhighlight lang="c#">
# まず、PhotinoWindowクラスのインスタンスを生成して、初期URLを設定する。<br>これは、アプリケーションのエントリーポイントとなる。
@page "/counter"
#: <syntaxhighlight lang="c#">
var window = new PhotinoWindow()
<h1>Counter</h1>
    .Load("wwwroot/index.html");
</syntaxhighlight>
// コンポーネントの実装
# フロントエンド側では、JavaScriptのルーティングライブラリ (例: Navigo) を使用してルーティングを管理する。<br>これにより、シングルページアプリケーションを提供することが可能となる。
// ...略
</syntaxhighlight>
<br>
パラメータを含むルートも設定可能である。<br>
例えば、ユーザIDに基づいた動的なルーティングは次のように実装することができる。<br>
<syntaxhighlight lang="c#">
@page "/user/{Id}"
@code {
    [Parameter]
    public string Id { get; set; }
}
</syntaxhighlight>
<br>
ナビゲーションについては、プログラムによる遷移と宣言的な遷移の両方をサポートしている。<br>
プログラムによる遷移には<code>NavigationManager</code>を使用して、宣言的な遷移には<code><NavLink></code>コンポーネントを使用する。<br>
<br>
<br>
重要な点では、Photino.NETではバックエンド (C#) とフロントエンド (JavaScript) 間の通信が可能である。<br>
これを利用して、ルーティングに関連する処理をバックエンド側で実装することもできる。<br>
  <syntaxhighlight lang="c#">
  <syntaxhighlight lang="c#">
  window.WebMessageReceived += (sender, message) => {
  // プログラムによる遷移
     if (message.Contains("navigate:")) {
@inject NavigationManager NavigationManager
       var route = message.Replace("navigate:", "");
      // ルーティング処理の実装
@code {
     private void NavigateToCounter()
    {
       NavigationManager.NavigateTo("/counter");
     }
     }
  };
  }
// 宣言的な遷移
<NavLink class="nav-link" href="counter">
    <span>Counter</span>
</NavLink>
  </syntaxhighlight>
  </syntaxhighlight>
<br>
<br>
また、Photino.NETのルーティングシステムは、デフォルトで外部URLへのナビゲーションを制限している。<br>
ルートパラメータのバリデーションやカスタム制約も実装可能である。<br>
これは意図しないナビゲーションを防ぐための重要な機能である。<br>
これにより、特定のパターンに一致するパラメータのみを受け付けるようなルーティングを設定することができる。<br>
<br>
<br>
ディープリンクの実装も可能であり、これによりデスクトップアプリケーションでありながら、Webアプリケーションのような柔軟なナビゲーションを提供することができる。<br>
さらに、入れ子のルーティングも実装可能である。<br>
これは、@pageディレクティブに複数のルートテンプレートを指定することで実現することができる。<br>
<syntaxhighlight lang="c#">
@page "/products"
@page "/products/{category}"
@code {
    [Parameter]
    public string Category { get; set; }
}
</syntaxhighlight>
<br>
<br>
また、ルーティングに関連するエラーハンドリングでは、404エラーや不正なルートへのアクセスに対して、適切なエラーページやフォールバックを実装することが推奨される。<br>
エラーハンドリングについて、存在しないルートへのアクセスや無効なパラメータに対して、カスタムの404ページや適切なエラーページを表示するように設定できる。<br>
これは、アプリケーションのルートコンポーネントでRouterコンポーネントを設定することで実現できる。<br>
<br>
<br>
カスタムスキームの実装も可能であり、これにより、アプリケーション固有のURLスキームを定義して特別なルーティング要件に対応することができる。<br>
また、Blazorの認証システムと組み合わせることにより、特定のルートへのアクセスを認証・認可により制限することも可能である。<br>
<br><br>
<br><br>


案内メニュー