Open12

Next.jsのディレクトリ構成をどうするか

KakedashiKakedashi

いろいろ参考にする
https://zenn.dev/mongolyy/articles/01f0a4375edb2e

  • components/
    • 全ページ共有、ページ固有のコンポーネントを分ける
  • pages/
    • componentを呼び出す
  • services/
    • ユーザーのアクションに応じて、データの加工(結合や集計など)を行うコードを置いておきます。
    • 加工元となるデータ取得は、repositories配下の関数を呼び出す
    • ユーザーの1アクションに対して、1つのサービス関数を作るイメージ
  • repositories/
    • DBやSaaSにアクセスする
  • models/ entities/
    • servicesで加工したデータと、repositoriesで取得したデータの区別が付きやすいように、servicesで生成するオブジェクトについては、モデル名にXXXDataのようなサフィックスをつけるようにしています
  • libs/
    • 使用しているライブラリ固有のコードで、初期化や設定のコードなど、データ取得に絡まないコードはここに配置します。
    • ライブラリ毎にまるっと切り替わる可能性があるので、ライブラリごとにディレクトリを分けています。
  • utils/
    • グローバルで使える便利な関数
  • constants/
    • グローバルで参照される定数
KakedashiKakedashi

Atomic Designを使うか使わないか

KakedashiKakedashi

「ここまで細かく分ける必要ないのでは」
https://note.com/tabelog_frontend/n/n07b4077f5cf3

  • 旧pages兼templates → portal
  • 旧organismsのうち、特定のページでしか呼び出されないものはcomponents/pages/[Page Name]/内にコンポーネント名でディレクトリを切って配置
  • ページを跨いで呼び出される共通の機能をprojects
  • 旧atomsと旧moleculesをまとめて、uiParts