NextJSとの併用
NextJSプロジェクトでFSDを実装することは可能ですが、プロジェクトの構造に関するNextJSの要件とFSDの原則の間に2つの点で対立が生じます。
pages
のファイルルーティング- NextJSにおける
app
の対立、または欠如
pages
におけるFSDとNextJSの対立
NextJSは、アプリケーションのルートを定義するためにpages
フォルダーを使用することを提案しています。pages
フォルダー内のファイルがURLに対応することを期待しています。このルーティングメカニズムは、FSDの概念に適合しません。なぜなら、このようなルーティングメカニズムでは、スライスの平坦な構造を維持することができないからです 。
NextJSのpages
フォルダーをプロジェクトのルートフォルダーに移動する(推奨)
このアプローチは、NextJSのpages
フォルダーをプロジェクトのルートフォルダーに移動し、FSDのページをNextJSのpages
フォルダーにインポートすることにあります。これにより、src
フォルダー内でFSDのプロジェクト構造を維持できます。
├── pages # NextJSのpagesフォルダー
├── src
│ ├── app
│ ├── entities
│ ├── features
│ ├── pages # FSDのpagesフォルダー
│ ├── shared
│ ├── widgets
FSD構造におけるpages
フォルダーの名前変更
もう一つの解決策は、FSD構造内のpages
層の名前を変更して、NextJSのpages
フォルダーとの名前衝突を避けることです。
FSDのpages
層をviews
層に変更することができます。
このようにすることで、src
フォルダー内のプロジェクト構造は、NextJSの要件と矛盾することなく保持されます。
├── app
├── entities
├── features
├── pages # NextJSのpagesフォルダー
├── views # 名前が変更されたFSDのページフォルダー
├── shared
├── widgets
この場合、プロジェクトのREADMEや内部ドキュメントなど、目立つ場所にこの名前変更を文書化することをお勧めします。この名前変更は、「プロジェクト知識」の一部です。