いや知らんけど、NextjsでSEOのために色々模索してたら死んだ
最近ちょっと自分できる気になってたけどクソ雑魚ナメクジだわ……ってなった
以下流れ
- Nextjsにsitemap付けたい
- getServerSidePropsで動的に作る必要ある
- api叩いても反応がない、なぜ?→webサーバー経由じゃないので、サーバーサイドのタイミングに反応できないっぽい(Laravelの開発者用サーバーでやってたからクライアントサイドのタイミングでしか通信できない)
- dockerにwebサーバー立て直す、ここで半日ぐらい詰まって精神崩壊する→結果docker image再生成してなかったのが原因でふて寝する
- sitemap作れるようになったけど、そもそもページをssrにしてないのでssr化しようとする(sitemap用のapi立てるのめんどくさかったから)
- これもapiはwebサーバーを叩く(これは事前に半日詰まったおかげでなんとかなった)
- useSWR + SSRの処理の作り方がわからない
- Next.js SSR – SWR ← これをパクる
- でもダイナミックルーティングの場合、getServerSidePropsのタイミングでuseRouter使えないので詰む
- ちょっと動的なページにしてみよう|出来る100%TypeScript 作って学ぶNext.js + GraphQL + Prisma(上) - GCP編 ← context経由でブラウザから送信されたパラメータなどを取得することを知る、これはjsのasync fetchをちゃんと履修してたらわかった話なのかもしれない、知らんけど
ざっと箇条書するとこんなもんかと思うけど、マジで疲れたしフレームワーク独自性高すぎて涙出そうになる
laravelのクエリビルダとかもそうだけど、フレームワークはもうそれ自体が別言語の扱いな気がした。phpの知識はlaravelに間違いなく活かせるとは思うけど、それはそれとしてlaravel独自の知識が必要すぎる、nextjsも同じでtypescriptをいくら知っててもフレームワークの独自型クソほどあるし、今回のssrもそうだけどtsとかの知識で太刀打ちできるものじゃない
もちろんその学習コストを補って余りある利点があると思うから頑張って勉強しながら作るわけだけど……疲れるわ……
何が言いたいかといえばちょっと天狗になっていた鼻がメタメタのボキボキになったという話でした
とはいえここまでくればデプロイまではおそらく走れるのでプロジェクト頓挫で終わらなさそうなのは良かった。今からssrに書き直すのとか動的にsitemap作らなくちゃいけないとか、そもそもレスポンシブにしてないからcss書き直さないといけないとか工程多すぎてめげそうだけど。頑張ろう
おわり
追記:
ssr + useswrにする意味多分無い。
いやあるシーンもあるっぽくはある、例えばユーザーがそのページに変更を加えられるようなシーンの場合は再フェッチする必要あるので、そこでクライアントサイドでレンダリングできるuseswrが使える
ただ自分のケースはそういったことないので(あるページもあるけど基本無い)そうなると常にssr、文字通りサーバーサイドレンダリングしかされない。useswrはクライアントサイドでのレンダリングなわけで、キャッシュとか関係ない
一応
これでキャッシュ残してしまえば、2回目以降早くはなるので、ssrでキャッシュ使うならこれがいいのかもしれない
どれぐらいキャッシュを残すかはまた別の話になってきそうな気がするので保留