以下の内容はhttps://kfly8.hatenablog.com/entry/2025/09/15/155045より取得しました。


MojoliciousでInertia.jsを利用するためのアダプターをリリースしました

PerlのバックエンドフレームワークのMojoliciousで、Inertia.jsを利用するためのアダプターをリリースしました。Inertia.js は、バックエンドフレームワークとReactやVueなどで書かれたコンポーネントを接続するための橋渡し的なライブラリです。

バックエンド側に十分資産があるが、全てを置き換えるにはコストがかかる。まずは、クライアント側の体験をよくしたいといった場合にハマるアプローチだと思います。

Mojoliciousなどのバックエンドフレームワークで、ReactやVueなどで書かれたコンポーネントを利用する場合、2つのアプローチがあると思います。1つは、バックエンドフレームワーク独自のテンプレートエンジンに、JavaScriptのコードを混ぜる。もう1つは、バックエンドAPIを叩いて描画はCSRSSRにする。どちらのアプローチも、バックエンドでテンプレートを選んで値を渡すだけで良かった頃と比べ、アーキテクチャは複雑です。

従来はテンプレートを選んで値を渡すだけ。楽ちん

Inertia.js を利用すれば、この古き良き時代の書きっぷりでありながら、Reactなどのコンポーネントを利用できます。具体的には以下のような具合で、バックエンド側で$c->inertia(COMPONENT, PROPS)と書けば、Inertia.js がcomponentと接続してくれます。

ReactコンポーネントとMojoliciousがIntertia.jsで接続される


もう一つ良いと思った点は、この接続のためのプロトコルがシンプルなことです。相当シンプルです。

例えば、こう書いたら・・・

$c->inertia('Index', {
   user => { name => 'Mojolicious' }
})

こんなJSONが返されます。

{
   "component": "Index",
   "props": { "user": { "name": "Mojolicious" } },
   "url": "/",
   "version": "c53bc3824540ea95b1e9b495c7a01a9d"
}

分かりやすい!

実際、Inertia.jsのプロトコルを見ると、10分くらいで読み終わる内容ですし、Mojoのpluginも100行未満で別のPerlフレームワークに移植するのも簡単だと思います。

最近、別のプロジェクトで、React Server Comonents をHonoで利用できるようにしましたが、こっちを10分で理解するのは自分にはムズカシイです😅 Inertia.js はCSRになるので、ユーザー体験やSEOを求めるならReact Server Comonents 方が良いと思いますが、Inertia.js で十分という状況はあると思いました。

zenn.dev


良かったら使ってみてください!

https://metacpan.org/pod/Mojolicious::Plugin::Inertia




以上の内容はhttps://kfly8.hatenablog.com/entry/2025/09/15/155045より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14