Leptosとは
LeptosはRustでWeb UIとサーバー処理を構築するフレームワークです。Signalを使った細粒度リアクティビティを備え、クライアントサイドレンダリング、サーバーサイドレンダリング、Hydrationに対応しています。
「Rustだから常に高速」とは限りません。Wasmの読み込み、サーバー処理、通信、DOM更新を含め、対象アプリで測定する必要があります。
Signalの基本
use leptos::prelude::*;
#[component]
fn Counter() -> impl IntoView {
let (count, set_count) = signal(0);
view! {
<button on:click=move |_| set_count.update(|n| *n += 1)>
"Count: " {count}
</button>
}
}
Signalを参照した表示は、値の変更に応じて更新されます。派生値にはMemo、副作用にはEffect、非同期データにはResourceを利用できます。
フルスタック機能
LeptosではServer Functionsを使い、サーバー上だけで実行する処理を定義できます。SSRではサーバーがHTMLを生成し、必要に応じてブラウザ側のWasmが操作を引き継ぎます。Axumなどとの統合方法は公式ガイドで案内されています。
採用時の注意
- Rust、Wasm、ブラウザAPIの知識が必要になる
- CSR、SSR、Hydrationで実行環境が異なる
- crateのバージョンをそろえ、移行ガイドを確認する
- Rustだけで完結しない外部JavaScript連携も事前に試す
Leptosは1.0以前の変更を含み得るため、記事のコードをそのまま固定せず、利用時点の公式BookとAPIドキュメントを確認してください。