๐ ๋ฌธ์ ์ํฉ
๊ธฐ์กด ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ
โโโ ๐ assets
โ โโโ ๐ fonts
โ โโโ ๐ images
โโโ ๐ components
โ โโโ ๐ appList
โ โ โโโ AppNameButton.js
โ โ โโโ AppInfoButton.js
โ โโโ ๐ myPage
โ โ โโโ MyPageInfoText.js
โ โ โโโ MyPageInfoHeader.js
โ โโโ ๐ main
โ โ โโโ DailyWorkContainer.js
โ โ โโโ ...
โ โโโ ๐ notice
โ โ โโโ NoticeButton.js
โ โ โโโ ...
โ โโโ ...
โโโ ๐ screens
โ โโโ appListScreen.js
โ โโโ myPageScreen.js
โ โโโ ...
โโโ ๐ utils
โโโ ๐ api
โโโ App.js
- assets: ์ด๋ฏธ์ง, ํฐํธ, ์์ด์ฝ ๋ฑ์ ์ ์ ๋ฆฌ์์ค ํ์ผ์ ๋ชจ์๋ ๋๋ ํ ๋ฆฌ์ ๋๋ค.
- components: ๋๋ฉ์ธ๋ณ๋ก UI ์ปดํฌ๋ํธ๋ฅผ ๋ชจ์๋ ๋๋ ํ ๋ฆฌ์ ๋๋ค.
- screens: UI ์ปดํฌ๋ํธ๋ฅผ ์กฐ๋ฆฝํ์ฌ ๊ตฌ์ฑํ ์ฃผ์ ํ๋ฉด ๋จ์๋ฅผ ๋ชจ์๋ ๋๋ ํ ๋ฆฌ์ ๋๋ค.
- utils: ํฌํผ ํจ์๋ฅผ ๋ชจ์๋ ๋๋ ํ ๋ฆฌ์ ๋๋ค.
- api: API ํธ์ถ ๋ก์ง์ ๋ชจ์๋ ๋๋ ํ ๋ฆฌ์ ๋๋ค.
๐ ์ฅ์
- ๊ด๋ จ ํ์ผ๋ค์ด ํ ๊ณณ์ ๋ชจ์ฌ ์์ด ์ฐพ๊ธฐ ์ฝ์ต๋๋ค.
๐ ๋จ์
- ๋๋ฉ์ธ๋ณ๋ก ๋๋ ์ ๊ด๋ฆฌํ๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ๋๋ฉ์ธ์์ ์ปดํฌ๋ํธ ์ฌ์ฌ์ฉ์ด ์ด๋ ต์ต๋๋ค.
- ์ปดํฌ๋ํธ ๋ถ๋ฆฌ ๊ธฐ์ค์ด ์ ํํ์ง ์์ ์ฌ์ฌ์ฉ์ด๋ ํ์ฅ์ฑ์ ์ด๋ ค์์ ๊ฒช์ ์ ์์ต๋๋ค.
๐๐ปโ๏ธ ๊ฐ์ ๋ฐฉ์
- ์ปดํฌ๋ํธ ๋ถ๋ฆฌ ๊ธฐ์ค ์ค๊ณํ์ฌ ์ผ๊ด์ฑ ์๊ฒ ์ปดํฌ๋ํธ๋ฅผ ๊ตฌ์ฑํ๊ณ , ์ปดํฌ๋ํธ ์ฌ์ฌ์ฉ์ฑ์ ํฅ์์ํค์.
- ๊ทธ๋ผ ๋ถ๋ฆฌ ๊ธฐ์ค์ ์ด๋ป๊ฒ ์ค๊ณํ ๊น? ์ํ ๋ฏน ๋์์ธ์ ์ฐธ๊ณ ํ์.
๐ก Atomic Design
์ปดํฌ๋ํธ๋ฅผ atoms, molecules, organisms, templates, pages 5๋จ๊ณ๋ก ๋๋ ๊ด๋ฆฌํ๋ ๋ฐฉ์
- atoms(์์)
- ๊ฐ์ฅ ์์ ๋จ์์ ์์
- button, text, input ...
- molecules(๋ถ์)
- atom๋ค์ ์ต์์ ์ญํ ์ํํ ์ ์๊ฒ ํฉํ ๊ทธ๋ฃน
- button + text + input
- organisms(์ ๊ธฐ์ฒด)
- ๋ฐฐ์น๋ฅผ ์ํ layout ๋จ์๋ก ํ๋์ ์ธํฐํ์ด์ค๋ฅผ ํ์ฑํ๋ ๊ทธ๋ฃน
- header, navigation
- templates(ํ
ํ๋ฆฟ)
- orgainisms๋ค์ ๋ ์ด์์์ด๋ ๋ฐ์ดํฐ ํ๋ฆ์ผ๋ก ์ฐ๊ฒฐํ์ฌ ์ ์ฒด์ ์ธ ํ์ด์ง ๊ตฌ์กฐ๋ฅผ ๋ง๋๋ ๋จ๊ณ
- pages(ํ์ด์ง)
- templates์ ์ค์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฉํ์ฌ ์์ฑ๋ ํ์ด์ง
๐ ์ ์ฉ ๊ณผ์
๐ป ๊ณ ๋ฏผํ ๋ถ๋ถ
1. molecules๋ organisms ๋ถ๋ฆฌ ๊ธฐ์ค์ ์ด๋ป๊ฒ ์ค์ ํ ๊ฒ ์ธ๊ฐ
- molecules: ์ฌ์ฌ์ฉ ๊ฐ๋ฅ์ฑ O
- organisms: ์ฌ์ฌ์ฉ ๊ฐ๋ฅ์ฑ X, (์ฃผ๋ก header/navigation/contents ๋ก ๊ตฌ์ฑ๋๋๋ก ํ์์)
2. templates, pages ํตํฉํ์
- ํ ํ๋ก์ ํธ์์ ๋๋๋ ๊ฒ์ด ๋ฌด์๋ฏธํ๋ค๊ณ ํ๋จ๋์์
- Props Drilling ๋ฌธ์ ํด์ ๊ฐ๋ฅ
์ํ ๋ฏน ๋์์ธ ์ ์ฉํ ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ
โโโ ๐ assets
โ โโโ ๐ fonts
โ โโโ ๐ images
โโโ ๐ components
โ โโโ ๐ atoms
โ โ โโโ ๐ Button
โ โ โ โโโ HeaderMenuButton.js
โ โ โ โโโ BackButton.js
โ โ โ โโโ ...
โ โ โโโ ๐ Image
โ โ โ โโโ CompanyAppIconImage.js
โ โ โ โโโ ...
โ โ โโโ ๐ Input
โ โ โ โโโ LoginInput.js
โ โ โโโ ๐ Text
โ โ โโโ NoticeTitleText.js
โ โ โโโ NoticeInfoText.js
โ โ โโโ ...
โ โโโ ๐ molecules
โ โ โโโ ๐ Global
โ โ โ โโโ CompanyInfo.js
โ โ โ โโโ AppInfo.js
โ โ โโโ ๐ Profile
โ โ โ โโโ ProfileInfo.js
โ โ โโโ ๐ Main
โ โ โ โโโ NoticeTitle.js
โ โ โโโ ๐ DailyWork
โ โ โโโ DailyWorkInfo.js
โ โโโ ๐ organisms
โ โโโ ๐ Global
โ โ โโโ Header.js
โ โโโ ๐ Profile
โ โ โโโ ProfileContents.js
โ โโโ ๐ Main
โ โ โโโ NoticeContents.js
โ โโโ ๐ DailyWork
โ โโโ DailyWorkContents.js
โโโ ๐ pages
โ โโโ ๐ Profile
โ โ โโโ index.js
โ โโโ ๐ Main
โ โ โโโ index.js
โ โโโ ๐ DailyWorks
โ โโโ index.js
โ โโโ index.form.js
โโโ ๐ utils
โโโ ๐ api
โโโ App.js
๐ ๋ค์ด๋ฐ ๊ท์น
1๏ธโฃ ๋๋ ํ ๋ฆฌ
atoms: ๊ธฐ๋ฅ๋ณ ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ(button, image, text ...)
molecules, organisms, pages: ๋๋ฉ์ธ๋ณ ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ(global(๊ณตํต), main, profile ...)
2๏ธโฃ ์ปดํฌ๋ํธ
atoms: ๋๋ฉ์ธ/์ธ๋ถ์ค๋ช /๊ธฐ๋ฅ (ex. NoticeTitleText)
molecules, organisms: ๋๋ฉ์ธ์ ์ ๋์ฌ๋ก ์ฌ์ฉ (ex. ProfileInfo, ProfileContents)
๐ ๋๋์
๐๐ป ์ฒ์๋ถํฐ ์ ์ค๊ณํ๊ณ ๊ฐ๋ฐํ์ (๊ตฌ์กฐ ๋ณ๊ฒฝํ๋๋ฐ ๊ฝค๋ ์๊ฐ์ด ์์๋์์)
๐๐ป Props Drilling ๋ฅผ ํด์ํ ์ ์๋ ๋ฐฉ์์ ๋ํด ๊ณ ๋ฏผํด๋ด์ผํ ๊ฒ ๊ฐ๋ค.
๐๐ป ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ UI ์ปดํฌ๋ํธ๋ฅผ ์ฒด๊ณ์ ์ผ๋ก ๊ตฌ์ถํ์ฌ, ๋๋ฐ์ด์ค๋ณ ๋์์ธ์ ์ ์ฉ์ด ํธ๋ฆฌํด์ก๋ค.
๐๐ป ์ปดํฌ๋ํธ ๊ฐ์ ์์กด์ฑ์ ๋ฎ์ถ์ด ์ ์ง๋ณด์ ์ฉ์ด, ์ฌ์ฌ์ฉ์ฑ ํฅ์ํ ์ ์์๋ค.