์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- frontend
- ํฐ์คํ ๋ฆฌ
- react
- ๊ฐ๋ฐ์
- typescript
- javascript
- ํ๊ณ ๋ก
- ๊ฐ๋ฐ๋ธ๋ก๊ทธ
- nextjs
- backend
- Today
- Total
๐ My name is Ez : ์ฝ๋ค ์ฌ์ ๊ฐ๋ฐlife
[Design Pattern] : Atomic Design (์ํ ๋ฏน ๋์์ธ) ๋ณธ๋ฌธ
[Design Pattern] : Atomic Design (์ํ ๋ฏน ๋์์ธ)
์ด์งํ 2023. 7. 20. 21:22ํ๋ก์ ํธ๋ฅผ ์์ํ๋ฉด์ ๊ธฐ์กด์ React๋ฅผ ์ ์ฌ์ฉํ๋์ง๋ฅผ ๋ชจ๋ฅผ ๋งํผ ์์ฑ๋ ์ฝ๋์๋ React์ ์ฅ์ ? ๊ฐ์ ? ์ ์ ํ ์ฐพ์๋ณผ ์๊ฐ ์์๋ค... ๐ญ ๐ญ ๐ญ ๐ญ
ํ ํ์ด์ง์ ๊ธธ๋ฉด 10000๋ผ์ธ์ด ๋๋ ์ฝ๋๋ค์ด ์๊ณ , ๋๊ตฐ๊ฐ ์์ ์ ํ๋ ค๊ณ ๊ทธ ํ์ด์ง ์ฝ๋๋ฅผ ๋ณด๋ฉด ๋ซ๊ณ ์ถ์ ๋ง์์ด๋๊น...
(์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ๋ถ๋ถ์ด ์ ํ ์์... ๋จ์ํ ์ปดํฌ๋ํธ ๋ช ๊ฐ๋ฅผ ์ ์ธํ๋ฉด...)
์ง๋์ฃผ ์๋ก ์ค์ ์๋์ด ํ๋ฐํธ๋ถ์ด ์ฝ๋๋ฅผ ๋ณด๊ณ ๋ถ์ํ๊ณ , ์๋ก์ด ํ๋ก์ ํธ๋ฅผ ์์ํจ์ ์์ผ์ ์ฐ๋ฆฌ๊ฐ ์๋กญ๊ฒ ์ ์ฉํด์ผ ํ ๋ฐฉํฅ์ฑ์ ์ ์ํด ์ฃผ์ จ๋ค. ( ๋ฌผ๋ก ์ ํ๋ ๋ฐฉํฅ์ ๊ฒฐ๊ณผ๋ง ๋ฃ๊ฒ ๋์์ง๋ง... ์ ํํ ์ด์ ๋ฅผ ๋ฌผ์ด๋ณผ ์์ ๐ฅฒ)
๊ทธ์ค์์ ์ค๋์ ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ๋ NextJs์์ ์ฌ์ฉํ ๋์์ธ ํจํด Atomic Design์ ๋ํด์ ๊ฐ๋จํ๊ฒ ์ ์ด๋ณด๊ณ , ํด๋น ํจํด์ ๋ํ ๋๋ ์ ๊ณผ ์ฐ๋ ค๋๋ ์ ๋ง ์์ฑํด ๋ณผ ์์ ์ด๋ค. (ํ๋ก์ ํธ๊ฐ ์งํ๋๋ฉด์ ๋๋ ์ ์ ๊ณ์ ํฌ์คํ ํ ์์ ! )
1. Atomic Design
์ํ ๋ฏน ๋์์ธ์ ์ฌ๋ฌ ๋ธ๋ก๊ทธ๋ ๊ธ์ ๋ดค์ ๋ ๊ณตํต์ ์ผ๋ก ์ค๋ช ํ๋ ๋ฐ๋ ๊ฐ์ฅ ์์ ๋จ์(๊ธฐ๋ฅ)๋ก ์ชผ๊ฐ์ ๊ทธ๊ฒ๋ค์ ์กฐ๋ฆฝํด์ ์ฌ์ฉํ๋ ๋ฐฉ์์ผ๋ก ์ดํดํ๋ค.

Atom(์์)
- ๊ฐ์ฅ ์์ ๋จ์์ ์ปดํฌ๋ํธ
- button, icon, input ๊ฐ์ ์ต์ ๊ธฐ๋ฅ์ ์ปดํฌ๋ํธ๋ก ๋ณผ ์ ์๋ค.

Molecules(๋ถ์)
- ์์ + ์์ (2๊ฐ ์ด์)์ ์์๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
- ์ฝ๊ฒ ๋ณด๋ฉด ๊ฒ์์ฐฝ ๊ฐ์ด input + button์ผ๋ก ์ด๋ฃจ์ด์ง ์ปดํฌ๋ํธ์ด๋ค.

Organism(์ ๊ธฐ์ฒด)
- ๋ถ์๋ค ๋๋ ๋ถ์ + ์์๋ก ์ด๋ฃจ์ด์ง ์ปดํฌ๋ํธ๋ค.
- ํค๋ ๋ฉ๋ด์ ๊ฐ์ ์ปดํฌ๋ํธ์ด๋ค.

Templetes(ํ ํ๋ฆฟ)
- ์ ๊ธฐ์ฒด๋ค์ ์งํฉ์ด๋ค.
- ํด๋น ๋ ์ด์์์ ํ์ธํ๊ณ ํด๋น ์ปดํฌ๋ํธ๋ค์ด ์๋ํ๋์ง ๋ณผ ์ ์๋ ๋จ๊ณ๋ค.

Page(ํ์ด์ง)
- ํ ํ๋ฆฟ์ ์ด์ฉํด์ ์ค์ ๋ฐ์ดํฐ๋ฅผ ๋ณด์ฌ์ฃผ๋ ๋จ๊ณ๋ค. (์์ฑ)

2. ์ฅ / ๋จ์
- ๐๐ป ์ฅ์
- ์ปดํฌ๋ํธ ์ฌ์ฌ์ฉ์ฑ์ด ๋ฐ์ด๋๋ค
- ์ค์ ๊ฐ๋ฐํ๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ๋ถ๋ฆฌํด์ ๊ฐ๋ณ ์ปดํฌ๋ํธ๋ฅผ ๊ฐ๋ฐํ๊ณ ํ ์คํธ๊ฐ ๊ฐ๋ฅํ๊ณ , ํผ๊ทธ๋ง์ ๊ฐ์ ๋์์ธ ๋๊ตฌ์๋ ํ์ธ์ด ๊ฐ๋ฅํ๋ค. ( ๋์์ธ์์ ๋๋์ด์ง ์ปดํฌ๋ํธ๋ก ๊ฐ๋ฐ)
- ํํ๋ก์ ํธ ์ ์คํ์ผ ๊ฐ์ด๋๋ฅผ ์ต์๋ก ํ ์ ์๋ค. (์ด๋ฏธ ๋ง๋ค์ด์ง ์ปดํฌ๋ํธ๋ฅผ ์กฐํฉํ๋ ํํ)
- ๋์์ธ์ ์์ ์ด ์ฉ์ด ( ๊ฐ๋ณ ์ปดํฌ๋ํธ๋ง ์์ ํ๋ฉด ๋)
- ๐๐ป๋จ์
- Atom๋จ์๋ก ๋๋๊ณ ์ปดํฌ๋ํธ ๊ฐ๋ฐ์ ๋ง์ ์๊ฐ์ด ์๋น๋๋ค.
- ๊ตฌ๋ถ์ ๊ธฐ์ค์ด ๋ช ํํ์ง ์์ผ๋ฉด ํ ํ๋ก์ ํธ์ ํผ๋์ค๋ฝ๋ค. ( ๊ธฐ์กด ํ๋ก์ ํธ์ ์๋ ์ปดํฌ๋ํธ๋ฅผ ๋๋๋ ๊ฒ๋ง์ผ๋ก๋ ๋๋๋ ์ฌ๋๋ง๋ค ๊ธฐ์ค์ด ๋ฌ๋ผ์ ํท๊ฐ๋ฆฐ๋ค.)
- ๋ค์ํ ์ผ์ด์ค๊ฐ ์๊ธฐ๋ฉด atom ์ด์ธ ๋ง์ ๋จ๊ณ์์ ๊ณผ๋ํ props๋ฅผ ์ ๋ฌํ๊ฒ ๋๋ค.
- ๋ช ํํ UI๋์์ธ์ด ์๋ค๋ฉด ๊ต์ฅํ ์์ฑํด์ผ ํ ์ปดํฌ๋ํธ๊ฐ ๋ง์์ง๋ค.
3. ๋๋ ์
์ค์ ๋ก ํ๋ก์ ํธ ๊ตฌํ๋จ๊ณ๋ ์๋๋ค. ์ง๊ธ์ ๊ธฐ์กด ํ๋ก์ ํธ์์ ๋๋์ ์๋ ์ปดํฌ๋ํธ์ ์ต์๋จ์ atom๋ถํฐ ๋๋๊ณ ํ๋์ฉ ์กฐํฉํ ์์๋ ์ปดํฌ๋ํธ๋ฅผ ๋ถ๋ฅํ๊ณ ์๋ค.
๋ถ๋ฅ๋ง ํ์ ๋ฟ์ธ๋ฐ๋ ๋ช ํํ ๋์์ธ ํจํด์ ์ดํด๊ฐ ์์ด์ ์ด๋ฐ์๋ ๊ต์ฅํ ํผ๋์ค๋ฌ์ ๋ค. ์ด๋๊น์ง ๋๋ ์ผ ํ๊ณ , ์ด๋ ๊ฒ๊น์ง ๋๋ ์ผ ํ๋ ๊ฒ ๋ง๋ ๊ฒ์ธ๊ฐ? ํ๋ ์๋ฌธ๋ ๋ค์๋ค.
๊ทธ๋ฆฌ๊ณ ์ด ํ๋์ ์ปดํฌ๋ํธ๋ฅผ ์ด๋ป๊ฒ ๊ด๋ฆฌํ๋ฉด ์ข์์ง ๊ฑฑ์ ๋ ์์ฐ๋ค.
๋ค๋ง, ์ฒ์๋ถํฐ ํํํ๊ฒ ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค์ด๋ธ๋ค๋ฉด ์ดํ์ ์ข์ ๊ฒฐ๊ณผ๊ฐ ์์ง ์์๊น ๊ธฐ๋๋ ๋๋ค.
์ด์ ์ StoryBook์ด๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฒ์ ์์์ ๋๋ ์ ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ง?๋ผ๋ ์๋ฌธ์ด ์์๋๋ฐ, ์ปดํฌ๋ํธ ๋ถ๋ฅ ์์ ์ ํ๋ฉด์ ๊ฐ์๊ธฐ ๋ ์ฌ๋ผ์ ์ฐ๋ฆฌ ํ๋ก์ ํธ์ ์ ์ฉํด๋ดค์ผ๋ฉด ์ข๊ฒ ๋ค.
๋ด์ผ์ StroyBook์ ๋ํด์ ํ๋ฒ ์์๋ณด๊ณ ๋ธ๋ก๊ทธ๋ก ๋จ๊ฒจ๋ด์ผ๊ฒ ๋ค.

์ฐธ๊ณ ๋งํฌ
'โจ๏ธ Web Front-End > NextJs' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[NextJs] : App Router ? Server Component? (0) | 2023.07.27 |
---|