FANDOM-K๋ K-POP ํฌ๋ค์ ์ํ ์ข ํฉ ํฌ๋ค ํ๋ซํผ์ ๋๋ค. ์ฐ๋ฆฌ ํ๋ซํผ์ ํตํด ์ฌ์ฉ์๋ค์ ๋ค์๊ณผ ๊ฐ์ ํ๋์ ํ ์ ์์ต๋๋ค:
- ์ข์ํ๋ K-POP ์์ด๋์ ์ํ ์ด๋ฒคํธ ์์ฑ ๋ฐ ์ฐธ์ฌ
- ์์ด๋์๊ฒ ํฌ๋ ๋ง์ ํ์ํ์ฌ ์ง์ ์ ์ธ ์ง์ ์ ๊ณต
- ๋ค์ํ ํฌํ ์ด๋ฒคํธ์ ์ฐธ์ฌํ์ฌ ํฌ๋ค ํ๋ ์ฆ์ง
- ๋ง์ดํ์ด์ง์์ ์ข์ํ๋ ์์ด๋ ์ถ๊ฐ ๋ฐ ๊ด๋ฆฌ
- ํฌ๋ค ์ปค๋ฎค๋ํฐ์ ์ํตํ๋ฉฐ ์ ๋ณด ๊ณต์
FANDOM-K๋ ํฌ๊ณผ ์์ด๋ ์ฌ์ด์ ๊ฑฐ๋ฆฌ๋ฅผ ์ขํ๊ณ , ํฌ๋ค์ด ๋์ฑ ์ ๊ทน์ ์ผ๋ก ์์ด๋์ ์ง์ํ ์ ์๋ ํ๋ซํผ์ ๋ชฉํ๋ก ํฉ๋๋ค.
- K-POP ํฌ๋ค ๋ฌธํ์์ ์ฐจ์ฉํ ์์(์ ์ฅ๋ , ํฌํ ์นด๋, ์ค๋งํธํฐ ๋ฑ)๋ฅผ ์๊ฐ์ ์ผ๋ก ๋ น์ฌ๋์ต๋๋ค.
๋ชจ์ ์ ๋๋ฉ์ด์ ๊ณผ์คํฌ๋กค ์ค๋์ ํ์ฉํ์ฌ ๋ชฐ์ ๊ฐ ์๋ UX๋ฅผ ์ ๊ณตํฉ๋๋ค.IntersectionObserverAPI๋ฅผ ํ์ฉํด ํ๋ฉด์ ์์๊ฐ ๋ํ๋ ๋๋ง ์ ๋๋ฉ์ด์ ์ ํ์ฑํํ์ฌ ์ฑ๋ฅ ์ต์ ํ๋ฅผ ์ ์ฉํ์ต๋๋ค.
์บ๋ฌ์
useRef๋ฅผ ํ์ฉํ์ฌ ์บ๋ฌ์ ์ ์ฒด ๋์ด์ ๋ํด์ ํ์ํ ์นด๋์ ๋์ด๋ฅผ ๊ตฌํ์ฌ ์นด๋๋ฅผ ๋ ๋๋งํด์คฌ์ต๋๋ค.๋ฐ์ํ ๋์์ธ์ผ๋ก ํ๋ฉด ํฌ๊ธฐ ์์ง์์ resize์ด๋ฒคํธ ๋ฆฌ์ค๋๋ก ํ์ธํ๊ณ ์ด์ ๋ฐ๋ผ ์นด๋ ๋์ด์ ์นด๋๋ฅผ ๋๋๋ง ํด์ฃผ๋ ๊ฐ์๋ฅผ ์กฐ์ ํ์ฌ ๋ฐ์ํ์ผ๋ก ์บ๋ฌ์ ์ด ๋์ํ๋๋ก ๋ง๋ค์์ต๋๋ค.- ์ ๋๋ฉ์ด์ ์ค๋ณต ์ฌ์ฉ์ ๋ฐฉ์งํ๊ธฐ ์ํ ๋ก์ง์ ์ถ๊ฐํ์ฌ ์บ๋ฌ์ ์ด ๋์์ด ์๋ฃ๋ ์ดํ์ ์ ๋๋ฉ์ด์ ์ด ๋์ํ๋๋ก ๊ตฌํํ์์ต๋๋ค.
์ด๋ฌ์ ์ฐจํธ
react-router-dom์ Outlet ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ ํํ ํญ์ ๋ฐ๋ผ ๋ค๋ฅธ ์ปดํฌ๋ํธ๋ฅผ ๋ ๋๋งํ๋๋ก ๊ตฌํํ์์ต๋๋ค.- ๋๋ฐ์ด์ค ํฌ๊ธฐ์ ๋ฐ๋ผ ํ์ด์ง๋ค์ด์ ๊ฐ์๋ฅผ ์๋ ์กฐ์ (PC: 10๊ฐ, ๋ชจ๋ฐ์ผ: 5๊ฐ), ์ปค์ ๊ธฐ๋ฐ ๋ฐ์ดํฐ ๋ก๋ฉ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ ํ์ด์ง์ ์ ์ฉํ์ต๋๋ค.
- ์ฑ๋ฅ ์ธก๋ฉด์์๋
useCallback์ ์ฌ์ฉํด ๋ถํ์ํ ๋ฆฌ๋ ๋๋ง ๋ฐฉ์งํ๊ณ ํจ์จ์ ์ธ ๋ ๋๋ง์ ์ ๋ํ์ต๋๋ค.
- ๋ชจ๋ฌ ์ปดํฌ๋ํธ๋
React Portal์ ํ์ฉํ์ฌ ๊ตฌํํ์ต๋๋ค. .React Portal์ ์ฌ์ฉํจ์ผ๋ก์จ ๋ชจ๋ฌ์ด DOM ๊ณ์ธต ๊ตฌ์กฐ์ ๊ด๊ณ์์ด document.body์ ์ง์ ๋ ๋๋ง๋์ด z-index ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํ ์ ์์์ต๋๋ค. motion๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ฉํ์ฌ ๋ชจ๋ฌ์ด ์ด๊ณ ๋ซํ ๋ ๋ถ๋๋ฌ์ด ์ ๋๋ฉ์ด์ ํจ๊ณผ๋ฅผ ๋ฃ์ด ์ฌ์ฉ์ ๊ฒฝํ์ ํฅ์์์ผฐ์ต๋๋ค.
ChartContext๋ฅผ ํ์ฉํด ์ํ ํตํฉ ๊ด๋ฆฌํ๋ฉฐ, ์์๋ฅผ ์๋ ๋ถ์ฌํ๋ ๋ก์ง์ ๊ตฌํํ์ต๋๋ค.
์ ์ํ ๋์์ธ์ผ๋ก, PC์ Tablet, Mobile์์ ๋ค๋ฅธ ๋ ์ด์์์ ํ์ธํ์ค ์ ์์ต๋๋ค.- progress bar๊ฐ ํฌํจ๋ ํ์ ์ ๋ณด ์ปดํฌ๋ํธ๋,
ํฉ์ฑ ์ปดํฌ๋ํธ ํจํด์ผ๋ก ๊ตฌํํ์ฌ ๋ ๋๋ง ์ต์ ํ์ ์ปดํฌ๋ํธ์ ์ฌ์ฌ์ฉ์ฑ์ ๋์์ต๋๋ค. web worker๋ก ํ์ด๋จธ๋ฅผ ๊ตฌํํ์ฌ ๋ฉ์ธ ์ค๋ ๋์ ๋ถ๋ด์ ์ค์์ต๋๋ค.memo๋ฅผ ํตํด ๋ถํ์ํ ๋ ๋๋ง์ ์ต์ํํ์ต๋๋ค.lazy loading๊ณผSuspense๋ฅผ ์ถ๊ฐํด ์ฑ๋ฅ ์ต์ ํ ํ์ต๋๋ค.- PC์ Mobile์ ์ ์คํฌ๋กค ํ์ด์ง๋ก ๊ตฌํ๋์ด ์๊ณ ,
์ ๋๋ฉ์ด์ ์ motion๊ณผ tailwindCSS๋ฅผ ํ์ฉํ์ต๋๋ค.
- ์์ธ ํ์ด์ง์์ ์ฌ์ฉ๋๋ ํ์ ๋ชจ๋ฌ์ Modal ์ปดํฌ๋ํธ, CreditForm ์ปดํฌ๋ํธ, IdolCardList ์ปดํฌ๋ํธ๋ฅผ ์กฐํฉํ์ฌ ๊ตฌํํ์์ต๋๋ค.
motion๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ ๋์๋ง๋ค์ ์๊ฐ์ ์ธ ์ํธ์์ฉ์ ์ฆ๋์์ผฐ์ต๋๋ค.Intersectoin ObserverAPI๋ฅผ ํตํ ๋ฌดํ์คํฌ๋กค์ ๊ตฌํํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ค๋๋กํ์์ต๋๋ค.useCallback,memo๋ฅผ ์ฌ์ฉํ์ฌ ๋ ๋๋ง์ฑ๋ฅ์ ์ต์ ํํ์์ต๋๋ค.
| ์ด๋ฆ / ์ง์ฑ | ์ฌ์ง | ์ฃผ์ ์ญํ |
|---|---|---|
| ๋ช ์ง์ฐ (ํ์ฅ) | ![]() |
ํ๋ก์ ํธ ์ด๊ด ๊ณตํต ์ปดํฌ๋ํธ: ์ฐจํธ ์์, ๊ด์ฌ์๋ ์์ด๋ ํ์ ์์ธ ํ์ด์ง |
| ๋งน์๋น (ํ์) | ![]() |
๊ณตํต ์ปดํฌ๋ํธ: ๋ฒํผ, Input ๋ง์ด ํ์ด์ง |
| ๋ฌธํ๋ (ํ์) | ![]() |
๊ณตํต ์ปดํฌ๋ํธ ๋ฉ์ธ ํ์ด์ง: ์ฐจํธ, ํฌํ |
| ๋ฐ์ฌํ (ํ์) | ![]() |
ํ๋ก์ ํธ ํ๊ฒฝ ์ค์ ๋์์ธ ๋ฐ ๋๋ฉ ํ์ด์ง ํ ์คํธ ๋ฉ์์ง |
| ์ ์ฉ๋ฏผ (ํ์) | ![]() |
๊ณตํต ์ปดํฌ๋ํธ: Navbar, ๋ชจ๋ฌ์ฐฝ ๋ฑ ๋ฉ์ธ ํ์ด์ง: ์บ๋ฌ์ ๋ฐฐํฌ |
-
๊ธฐ๋ณธ ์๊ตฌ์ฌํญ ์์ฑ (1~2์ฐจ ์คํ๋ฆฐํธ)
- ์ปดํฌ๋ํธ ์คํ์ผ ๊ฐ๋ฐ (์ปดํฌ๋ํธ ๋จ์ ๋ถ๋ด)
- ๊ธฐ๋ฅ ๊ฐ๋ฐ (๊ธฐ๋ฅ ๋จ์ ๋ถ๋ด)
-
๋ฆฌํฉํ ๋ง (3~4์ฐจ ์คํ๋ฆฐํธ)
- ํ์ด์ง ๋จ์ ๋๋ ๊ธฐ๋ฅ ๋จ์๋ก ๋ฆฌํฉํ ๋ง
-
์ปดํฌ๋ํธ ์คํ์ผ ๊ฐ๋ฐ
- ๊ธฐ๋ณธ ๋งํฌ ์ฐ๊ฒฐ,
onChange, ์ ํจ์ฑ ๊ฒ์ฌ ํฌํจ
- ๊ธฐ๋ณธ ๋งํฌ ์ฐ๊ฒฐ,
-
๊ธฐ๋ฅ ๋จ์ ๊ฐ๋ฐ
- API ์ฐ๊ฒฐ ๋ฑ ์ค์ ๊ธฐ๋ฅ ๊ตฌํ
-
ํ์ด์ง ๋จ์ ์์ฑ
- ๊ธฐ๋ฅ์ด ํฌํจ๋ ์ปดํฌ๋ํธ๋ฅผ ๋ ์ด์์์ ๋ง๊ฒ ๋ฐฐ์น
- ๋ชจ๋ ๊ฐ๋ฐ ์๋ฃ ํ ๋ฆฌํฉํ ๋ง ์์
- ๊ธฐ๋ณธ ์๊ตฌ์ฌํญ ์ธ์ ์ถ๊ฐ ๊ธฐ๋ฅ ์ค์ ๊ฐ๋ฐ (์: ์ ๋๋ฉ์ด์ )
- ์ ์ ์ ๋ฐฉ์์ผ๋ก ๋ฆฌํฉํ ๋ง ์งํ (R&R ์ฌ์ ๋ถ๋ด ์์)
- Fork ์์ด ์์ : Organization โ ์๋ณธ clone
- ๋ธ๋์น ๊ตฌ์กฐ:
๋ธ๋์น ์ค๋ช main์ค์ ์๋น์ค ๋ฐฐํฌ์ฉ ๋ธ๋์น developdev ์๋ฒ์์ ์ฌ์ฉํ๋ ํตํฉ ๋ธ๋์น feature/๋ฒํธ๊ธฐ๋ฅ ๋จ์ ์์ ๋ธ๋์น (์์ ์๋ฃ ํ ์ญ์ )
์:feature/30
| ํ๊ทธ | ์ค๋ช |
|---|---|
feat |
์๋ก์ด ๊ธฐ๋ฅ ์ถ๊ฐ |
fix |
๋ฒ๊ทธ ์์ |
docs |
๋ฌธ์ ์์ |
style |
์ฝ๋ ํฌ๋งทํ , ์ธ๋ฏธ์ฝ๋ก ๋๋ฝ ๋ฑ (์ฝ๋ ๋ก์ง ๋ณํ ์์) |
refactor |
์ฝ๋ ๋ฆฌํฉํ ๋ง |
test |
ํ ์คํธ ์ฝ๋ ์ถ๊ฐ ๋ฐ ์์ |
chore |
๋น๋, ํจํค์ง ๋งค๋์ ๋ฑ ์ค์ ๋ณ๊ฒฝ |
- ์กฐ๊ฑด์์ด ๋ณต์กํ๊ฑฐ๋ ์ฌ์ฌ์ฉํ๋ค๋ฉด ์ด๋ฆ์ ๋ถ์ฌ
- ๋งค์ง ๋๋ฒ๋ ์์ํํ์ฌ ์ฌ์ฉ
- ์ ๋ ๊ฒฝ๋ก alias ์ฌ์ฉ ๊ถ์ฅ
| ํญ๋ชฉ | ๋ค์ด๋ฐ ๊ท์น |
|---|---|
| ๋๋ ํ ๋ฆฌ๋ช | kebab-case |
| ์ปดํฌ๋ํธ, ํ์ด์ง๋ช | PascalCase (ํ์ผ๋ช
= ์ปดํฌ๋ํธ๋ช
) |
| ํจ์, ๋ณ์, ํ | camelCase |
| asset ํ์ผ๋ช | ์๋ฌธ์ ์ฌ์ฉ ์์ด์ฝ: icon_, ์ด๋ฏธ์ง: image_ |
| ์ด๋ฒคํธ ํธ๋ค๋ฌ prop | on__ |
| ์ด๋ฒคํธ ํจ์๋ช | handle__ |
| ์ปค์คํ ํ | use__ |
| boolean ํ์ ๋ณ์ | is__, has__ |
| Context | __Context |
| ๊ณ ์ฐจ ์ปดํฌ๋ํธ(HOC) | with__ |
| state setter ํจ์ | set__ |
| ๋ฐฐ์ด ๋ณ์ | __List |
| ์ปดํฌ๋ํธ ์ ์ธ ๋ฐฉ์ | ํ์ดํ ํจ์ ์ฌ์ฉ |
| UI ์ปดํฌ๋ํธ | ๋จ์ํ ์ด๋ฆ (์: Button, Card) |
| Entity ์ปดํฌ๋ํธ | Entity๋ช
+ ์ญํ (์: UserProfile, ProductCard) |
| import ์์ | 1) ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ (default โ custom) 2) ์ ๋ ๊ฒฝ๋ก 3) ์๋ ๊ฒฝ๋ก |














