Server Side Rendering

前回の簡易PostアプリをSSR対応してみました。

Prisma & PostgreSQL / Next.js

大きな違いは、API Routes の /api/notes/route.tsが不要になります。
これにより呼び出しのfetchも不要になり、その代わりにServerActionのaserver.tsにDB保存、削除を記述します。
(DB取得は、前回テストでpage.tsxにprismaのデータ取得を入れたものを使用し、それをAppに渡します。   page.tsx  <App data={data} /> )

app.tsx

server.ts

実行画面

ボタンデザインは標準のものになります。
fetchとそれを待ち受けするroute.tsのハンドラーの部分が不要になりまるため、コードばシンプルになります。SSRについてパフォーマンスのメリットがよく言われますが、私はこのサーバサイドとクライアントサイドのデータ渡しがネットワークを意識しなくても良い点が一番のメリットと思っています。
といっても、ServerActionで使われている、Form Submit Action は、Webの初期の機能であり、新しいのか古いのかわからない感じが面白いです。
まぁ、昔はJavaScriptが走らないブラウザでしたので、Server Side Rendering が普通でした。この点、PHPで開発していたFacebookが、Reactでこのようなアプローチを取るのも自然に感じます。
PHPで、JavaScriptコードを動的に書きブラウザで実行させることをAJAX以前にやっていたこともありますが、現在のSSRを学ぶ上でとても参考になっています。
Nextjsは、サーバとブラウザで同じ言語が使えるメリットを最大限活かしていると実感します。