Agent Skills by ALSEL
Anthropic Claudeその他⭐ リポ 0品質スコア 50/100

blazor

Blazorの開発に関するガイドラインで、コンポーネントのライフサイクル、状態管理、パフォーマンス最適化について網羅しています。Blazorアプリケーションの設計・実装時に参照することで、ベストプラクティスに沿った開発が行えます。

description の原文を見る

Guidelines for Blazor development including component lifecycle, state management, and performance optimization

SKILL.md 本文

Blazor 開発ガイドライン

Blazor Server と Blazor WebAssembly の両方に関する深い知識を持つ Blazor 開発のエキスパートです。

コンポーネント アーキテクチャ

コンポーネント設計

  • 小さく、焦点を絞ったコンポーネントを作成する
  • 入力にはコンポーネント パラメーターを使用する
  • 出力/イベントには EventCallback を使用する
  • クリーンアップのために IDisposable を実装する
  • カスケード パラメーターは控えめに使用する

コンポーネント構造

@page "/users/{Id:int}"
@inject IUserService UserService

<h1>@User?.Name</h1>

@code {
    [Parameter]
    public int Id { get; set; }

    private User? User { get; set; }

    protected override async Task OnInitializedAsync()
    {
        User = await UserService.GetUserAsync(Id);
    }
}

コンポーネント ライフサイクル

ライフサイクル メソッド

  • OnInitialized/OnInitializedAsync: 初期設定
  • OnParametersSet/OnParametersSetAsync: パラメーター変更時
  • OnAfterRender/OnAfterRenderAsync: DOM 更新後
  • Dispose: リソースのクリーンアップ

ベストプラクティス

  • データ読み込みには OnInitializedAsync を使用する
  • OnAfterRenderAsyncfirstRender をチェックする
  • サブスクリプションとタイマーを破棄する
  • 長時間実行される同期コードを避ける

データ バインディング

一方向バインディング

<p>@message</p>
<input value="@inputValue" />

双方向バインディング

<input @bind="inputValue" />
<input @bind="inputValue" @bind:event="oninput" />

イベント ハンドリング

<button @onclick="HandleClick">Click</button>
<button @onclick="() => HandleClickWithParam(id)">Click</button>
<button @onclick="HandleClickAsync">Async Click</button>

レンダリング最適化

不要なレンダリングを防ぐ

  • リスト項目に @key を使用する
  • 必要に応じて ShouldRender() を実装する
  • StateHasChanged() は慎重に使用する
  • ループ内でのインラインハンドラーを避ける

仮想化

<Virtualize Items="@items" Context="item">
    <ItemContent>
        <div>@item.Name</div>
    </ItemContent>
</Virtualize>

状態管理

コンポーネント状態

  • コンポーネント状態にはプライベート フィールドを使用する
  • 外部から状態が変更される場合、StateHasChanged() を呼び出す
  • スレッド セーフな更新には InvokeAsync を使用する

カスケード パラメーター

<CascadingValue Value="@currentTheme">
    <ChildComponent />
</CascadingValue>

<!-- 子コンポーネント内 -->
[CascadingParameter]
public Theme CurrentTheme { get; set; }

状態コンテナー

  • インジェクト可能な状態サービスを作成する
  • 状態変更通知にはイベントを使用する
  • 複雑な状態管理には Fluxor を検討する

Blazor Server vs WebAssembly

Blazor Server

  • 状態はサーバーに存在する
  • SignalR による実時間接続
  • 初期読み込みが高速
  • 安定した接続が必要
  • 社内アプリに適している

Blazor WebAssembly

  • ブラウザ内で完全に実行される
  • 初期ダウンロードがより大きい
  • オフラインで動作可能 (PWA 対応)
  • ユーザーごとのサーバー リソースが不要
  • 公開アプリに適している

API 統合

HTTP クライアント

@inject HttpClient Http

private async Task LoadData()
{
    users = await Http.GetFromJsonAsync<List<User>>("api/users");
}

エラー ハンドリング

try
{
    users = await Http.GetFromJsonAsync<List<User>>("api/users");
}
catch (HttpRequestException ex)
{
    errorMessage = "Failed to load users";
}

エラー ハンドリング

エラー バウンダリー

<ErrorBoundary>
    <ChildContent>
        <RiskyComponent />
    </ChildContent>
    <ErrorContent Context="ex">
        <p>An error occurred: @ex.Message</p>
    </ErrorContent>
</ErrorBoundary>

グローバル エラー ハンドリング

  • カスタム ハンドリングには IErrorBoundary を実装する
  • エラーをサーバーにログする
  • ユーザーフレンドリーなメッセージを表示する

テスト

bUnit テスト

[Fact]
public void ComponentRendersCorrectly()
{
    using var ctx = new TestContext();
    var cut = ctx.RenderComponent<Counter>();

    cut.Find("p").MarkupMatches("<p>Current count: 0</p>");
    cut.Find("button").Click();
    cut.Find("p").MarkupMatches("<p>Current count: 1</p>");
}

認証

セットアップ

  • AuthenticationStateProvider を使用する
  • 条件付き UI には AuthorizeView を使用する
  • ページに [Authorize] 属性を使用する
  • JWT 用にカスタム認証状態プロバイダーを実装する

AuthorizeView

<AuthorizeView>
    <Authorized>
        <p>Welcome, @context.User.Identity?.Name!</p>
    </Authorized>
    <NotAuthorized>
        <p>Please log in.</p>
    </NotAuthorized>
</AuthorizeView>

パフォーマンス ティップス

  • 動的リストには @key を使用する
  • 大規模リストには仮想化を実装する
  • @if でコンポーネントを遅延読み込みする
  • JavaScript 相互運用呼び出しを最小化する
  • .NET 8 以降ではストリーミング レンダリングを使用する

ライセンス: Apache-2.0(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
mindrally
リポジトリ
mindrally/skills
ライセンス
Apache-2.0
最終更新
不明

Source: https://github.com/mindrally/skills / ライセンス: Apache-2.0

関連スキル

汎用その他⭐ リポ 1,982

superfluid

Superfluidプロトコルおよびそのエコシステムに関するナレッジベースです。Superfluidについて情報を検索する際は、ウェブ検索の前にこちらを参照してください。対応キーワード:Superfluid、CFA、GDA、Super App、Super Token、stream、flow rate、real-time balance、pool(member/distributor)、IDA、sentinels、liquidation、TOGA、@sfpro/sdk、semantic money、yellowpaper、whitepaper

by LeoYeAI
汎用その他⭐ リポ 100

civ-finish-quotes

実質的なタスクが真に完了した際に、文明風の儀式的な引用句を追加します。ユーザーやエージェントが機能追加、リファクタリング、分析、設計ドキュメント、プロセス改善、レポート、執筆タスクといった実際の成果物を完成させるときに、明示的な依頼がなくても使用します。短い返信や小さな修正、未完成の作業には適用しません。

by huxiuhan
汎用その他⭐ リポ 1,110

nookplot

Base(Ethereum L2)上のAIエージェント向け分散型調整ネットワークです。エージェントがオンチェーンアイデンティティを登録する、コンテンツを公開する、他のエージェントにメッセージを送る、マーケットプレイスで専門家を雇う、バウンティを投稿・請求する、レピュテーションを構築する、共有プロジェクトで協業する、リサーチチャレンジを解くことでNOOKをマイニングする、キュレーションされたナレッジを備えたスタンドアロンオンチェーンエージェントをデプロイする、またはアグリーメントとリワードで収益を得る場合に利用できます。エージェントネットワーク、エージェント調整、分散型エージェント、NOOKトークン、マイニングチャレンジ、ナレッジバンドル、エージェントレピュテーション、エージェントマーケットプレイス、ERC-2771メタトランザクション、Prepare-Sign-Relay、AgentFactory、またはNookplotが言及された場合にトリガーされます。

by BankrBot
汎用その他⭐ リポ 59

web3-polymarket

Polygon上でのPolymarket予測市場取引統合です。認証機能(L1 EIP-712、L2 HMAC-SHA256、ビルダーヘッダー)、注文発注(GTC/GTD/FOK/FAK、バッチ、ポストオンリー、ハートビート)、市場データ(Gamma API、Data API、オーダーブック、サブグラフ)、WebSocketストリーミング(市場・ユーザー・スポーツチャネル)、CTF操作(分割、統合、償却、ネガティブリスク)、ブリッジ機能(入金、出金、マルチチェーン)、およびガスレスリレイトランザクションに対応しています。AIエージェント、自動マーケットメーカー、予測市場UI、またはPolygraph上のPolymarketと統合するアプリケーション構築時に活用できます。

by elophanto
汎用その他⭐ リポ 52

ethskills

Ethereum、EVM、またはブロックチェーン関連のリクエストに対応します。スマートコントラクト、dApps、ウォレット、DeFiプロトコルの構築、監査、デプロイ、インタラクションに適用されます。Solidityの開発、コントラクトアドレス、トークン規格(ERC-20、ERC-721、ERC-4626など)、Layer 2ネットワーク(Base、Arbitrum、Optimism、zkSync、Polygon)、Uniswap、Aave、Curveなどのプロトコルとの統合をカバーします。ガスコスト、コントラクトのデシマル設定、オラクルセキュリティ、リエントランシー、MEV、ブリッジング、ウォレット管理、オンチェーンデータの取得、本番環境へのデプロイ、プロトコル進化(EIPライフサイクル、フォーク追跡、今後の変更予定)といったトピックを含みます。

by jiayaoqijia
汎用その他⭐ リポ 44

xxyy-trade

このスキルは、ユーザーが「トークン購入」「トークン売却」「トークンスワップ」「暗号資産取引」「取引ステータス確認」「トランザクション照会」「トークンスキャン」「フィード」「チェーン監視」「トークン照会」「トークン詳細」「トークン安全性確認」「ウォレット一覧表示」「マイウォレット」「AIスキャン」「自動スキャン」「ツイートスキャン」「オンボーディング」「IP確認」「IPホワイトリスト」「トークン発行」「自動売却」「損切り」「利益確定」「トレーリングストップ」「保有者」「トップホルダー」「KOLホルダー」などをリクエストした場合、またはSolana/ETH/BSC/BaseチェーンでXXYYを経由した取引について言及した場合に使用します。XXYY Open APIを通じてオンチェーン取引とデータ照会を実現します。

by Jimmy-Holiday
本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: mindrally · mindrally/skills · ライセンス: Apache-2.0