2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

株式会社OMJテクノソリューションズAdvent Calendar 2023

Day 9

features構成で整理してみた。(Next.js )

Last updated at Posted at 2023-12-08

なぜfeatures構成にしたのか(初めに)

・アトミックデザインからの脱却
・プロダクトごとに管理できるようにしたい
・ドメインを意識した開発ができるようにしたい

アトミックデザインからの脱却

前にNuxt.jsを触っていた時にこれ辛いなぁ..と思ったのが、organimsの肥大化です。
どのコンポーネントをどのプロダクトで扱っているのかが分からず、コードを追う時間がかなり長かったという経験があり、アトミックデザインからの脱却を図っています。
その点、featuresのディレクトリ構成はプロダクトごとにコンポーネントを管理できるのでかなり管理しやすいのではないかと思います。

プロダクトごとに管理できるようにしたい

上記に書いたことと被りますが、プロダクトごとに管理ができるのでコンポーネントを扱いやすいのと、命名規則にあまり悩まずに済むのかと思います。
例えば、認証機能であるのなら Auth - register,login みたいにかなりシンプルにできますね。

ドメインを意識した開発ができるようにしたい

features構成はプロダクトごとにUI,型、ロジックと隠蔽できるので、そのプロダクトに対しての開発に集中できるため開発がしやすいですね。

実際のディレクトリ構造の一例 (認証機能)

root/
   ┝ components/
       └ elements/   
            └ Button/
            └ EButton.tsx
          └ TextField
            └ ETextField.tsx
            └ ENumberTextField.tsx
       └ layouts/
          └ Header/
          └ Footer/
          └ Main/
       
   ┝ features
       └ Auth
          └ api
              └ RegisterApi.tsx
          └ components
              └ Register.tsx
              └ Login.tsx
          └ hooks
              └ useRegister.tsx
              └ useLogin.tsx
          └ styles
              └ AuthStyle.tsx
          └ types
              └ RegisterType.tsx
              └ LoginType.tsx
      ┝ pages

参考記事一覧

Next.jsディレクトリ構成・設計再考(featuresが何を解決するか)
https://zenn.dev/yodaka/articles/eca2d4bf552aeb

Reactのディレクトリ構成にfeaturesを導入してみた
https://tech.anotherworks.co.jp/article/react-typescript-architecture

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?