本日の作業
エディタ部分でNovelを試してみた。
VSCode Extentionsはpublic repositoryでないとならないのでどうするか。
Remixの学習
今回Remixを初めて採用するので色々学習
loader関数
routes ≒ page
loaderでServer Side Fetchして Responseまたはjson関数を返し、useLoaderData hooksで受け取る
action関数
コンポーネントからfetchする際に使う
loaderの様にaction関数でServer Side FetchしてResponseまたはjsonを返し、useFetcher hooks のsubmitなどのイベントをDOMイベントなどに渡す。
Initial fetchする際はuseEffectにしているのを見かけたが、それはちと気持ち悪さを感じる。
swrぽい
状態管理
なくても良さそうな気もする反面、この辺は実装しながら必要なのを入れる感じで。
ただし、薄い状態管理ができるものが良さそう
ソースのディレクトリ構成はこの記事を参考にすると良さそう
routes配下にDomain Component(FSDでいうentities)を置いていくのはどうなのかかなり疑問。
関心ごとの近いファイルを同じディレクトリに集約する方がいいというのは最近失敗したこともあってそう思うが、routesの責務的には画面ルートと画面に直接関係のあるセクションやブロックである方が意味が通ることを考えるとFSDでいうところのpages, widgetsがそれ相応ではないかと。
ちなみにFSDのfeaturesとentitiesは役割を細分化しすぎな気がするのでwidgetはentititesで構成するみたいなのが良いと思う。そうすればRemixのactionをうまく活かせそうな気がする(実装してみないことにはなんともわからないけど)。
勉強会メモ
Remix vs Next.js App Router的な会だった。
目立って気になったというか参考になった点
fetchと状態管理周りで考えることが減るぽい。
課題としてはLoaderの中にカプセル化したビジネスロジック・アプリケーション層との連携をどうするかは今後実装しつつ知見貯めていきたい。
Next.js App Routerでも最近History API周り改善されたが、改善されるまでとcache-controlが相当辛かったとのこと。実際に以前Next.js採用した際もApp Routerが来たタイミングだったがこの辺 + 学習コスト + 想定外の問題に対応することを考えて0→1でスピード求められてたから採用を見送った。
そのほか、メモ
Remixは大体わかった。はず。
明日はインフラ環境を整える必要があるので先にそれをやってデプロイできるところまで持っていく。