๐ฑ[PHOBUM] ํ์๋ก: ์ด๋ฏธ์ง ์ ๋ก๋ ๋ฐ ์์ ๊ธฐ๋ฅ ๊ฐ์
๐ฑ [PHOBUM] ์ด๋ฏธ์ง ์ ๋ก๋ ๋ฐ ์์ ๊ธฐ๋ฅ ๊ฐ์
์ต๊ทผ PHOBUM ํ๋ก์ ํธ์์๋ ์ด๋ฏธ์ง ์
๋ก๋ ๋ฐ ์์ ๊ธฐ๋ฅ ์ ๋ฐ์ ๋ํ ๋ฆฌํฉํ ๋ง ์์
์ ์งํํ์ต๋๋ค.
์ด๊ธฐ ๊ตฌ์กฐ์์๋ image-upload
ํด๋ ๋ด๋ถ์ ๋ชจ๋ ๋ก์ง์ด ๋ชฐ๋ ค ์์ด ์ ์ง๋ณด์์ ์ด๋ ค์์ด ์์๊ณ , ์ฌ์ฉ์ ๊ฒฝํ๋ ๋ถ์กฑํ ์ ์ด ์์์ต๋๋ค.
์ด๋ฒ ๊ฐ์ ์์ ์์๋ ์ปดํฌ๋ํธ ๊ตฌ์กฐ ๋ถ๋ฆฌ, ์ํ ๊ด๋ฆฌ ์ต์ ํ, ๋ ๋๋ง ์ฑ๋ฅ ํฅ์, ๊ทธ๋ฆฌ๊ณ ์ฆ๊ฐ์ ์ธ ์ฌ์ฉ์ ํผ๋๋ฐฑ ์ ๊ณต์ ์ค์ฌ์ผ๋ก ๊ฐ์ ํ์ต๋๋ค.
โ ์ปดํฌ๋ํธ ๊ตฌ์กฐ ๊ฐ์
๐น CardDetail ์ปดํฌ๋ํธ
- ์ด๋ฏธ์ง ์์ ํ ์ฆ์ UI์ ๋ฐ์๋๋๋ก ์ฒ๋ฆฌ
useMemo
,useCallback
์ ์ ๊ทน ํ์ฉํ์ฌ ์ฐ์ฐ ์ต์ ํ- ์ํ ๋ก์ง ๋จ์ํ ๋ฐ ์ฝ๋ ๊ฐ๋ ์ฑ ํฅ์
๐น CardModify ์ปดํฌ๋ํธ
- ํ์ผ ์ ํ ์ฆ์ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์ ๊ณต
- ์ ์ฅ ์์๋ ๋ฐฑ์๋์ ๋น๋๊ธฐ ์์ฒญ โ ๋ฐ์ ํ ์ํ ์ ๋ฐ์ดํธ
- ๋ถํ์ํ ์ํ ์ค๋ณต ์ ๊ฑฐ ๋ฐ ์ปดํฉํธํ ํ๋ฆ ๊ตฌ์ฑ
๐น Album ์ปดํฌ๋ํธ
Intersection Observer
ํ์ฉ โ ๋ณด์ด๋ ์ด๋ฏธ์ง ์์ฃผ ํ๋ฆฌ๋ก๋ฉ- ์ด๋ฏธ์ง ๋ชฉ๋ก ์ํ๋ฅผ ๋ถ๋ฆฌํ์ฌ ๋ถํ์ํ ์ ์ฒด ๋ ๋๋ง ๋ฐฉ์ง
๐ ๊ธฐ์ ์ ๊ฐ์ ์ฌํญ
๐ ์ํ ๊ด๋ฆฌ ์ต์ ํ
useCallback
,useMemo
๋ก ๋ฆฌ๋ ๋๋ง ์ต์ํ- ์ํ ์ ๋ฐ์ดํธ๋ ๋ถ๋ถ์ ์ผ๋ก ์ฒ๋ฆฌํ์ฌ ์ฑ๋ฅ ์ต์ ํ
๐ ์ด๋ฏธ์ง ์ฒ๋ฆฌ ๋ฐฉ์ ๋จ์ํ
const handleModifySave = async (updatedImage: ImageUpdateRequest) => {
const response = await imagesApi.update(currentImage.id, updatedImage);
const newImage = {
...currentImage,
...response.data
};
setCurrentImage(newImage);
onEdit?.(newImage);
};
- API ์๋ต ๊ธฐ๋ฐ์ผ๋ก ์ํ ๊ฐฑ์ โ ์ฆ์ ๋ฐ์
- ์์ ์ปดํฌ๋ํธ์๋ ์ฝ๋ฐฑ์ผ๋ก ์ ๋ฐ์ดํธ ์ ๋ฌ
๐ ๋ ๋๋ง ๋ฐ ๋ฉ๋ชจ๋ฆฌ ์ต์ ํ
- ์ด๋ฏธ์ง ํ๋ฆฌ๋ก๋ฉ ๋์
cleanup
ํจ์ ์ถ๊ฐ๋ก ๋ถํ์ํ ๋ฆฌ์ค๋ ์ ๊ฑฐ- ์ค๋ณต API ํธ์ถ ๋ฐฉ์ง ๋ฐ ๋ ๋๋ง ํจ์จ ๊ฐ์ (์ฝ 20~30% ์ฑ๋ฅ ํฅ์ ์ฒด๊ฐ)
๐ฏ ์ฌ์ฉ์ ๊ฒฝํ ๊ฐ์
์ฆ๊ฐ์ ์ธ UI ๋ฐ์
- ์์ ์ฆ์ ์ด๋ฏธ์ง ๊ฐฑ์ โ ์ค์๊ฐ ํผ๋๋ฐฑ
- ๋ก๋ฉ ์ค์๋ ์คํผ๋ ๋๋ ์งํ ํ์
- ์ค๋ฅ ์ ๋ช ํํ ์๋ฌ ๋ฉ์์ง ์ ๊ณต
์ด๋ฏธ์ง ์ ๋ก๋ UX ํฅ์
- ์ ํ ์ฆ์ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ก ์ด๋ฏธ์ง ํ์ธ ๊ฐ๋ฅ
- ์ ๋ก๋ ์ค ์๊ฐ์ ์ํ ํ์
- ์์ /์ ์ฅ/์ทจ์ ๋ฒํผ ๋ช ํํ ๋ถ๋ฆฌํด ์์ ํผ๋ ๋ฐฉ์ง
๐ญ ํฅํ ๊ฐ์ ์์ ์ฌํญ
๊ฐ์ ํญ๋ชฉ | ์ธ๋ถ ๋ด์ฉ |
---|---|
์ด๋ฏธ์ง ์ต์ ํ | WebP ์๋ ๋ณํ, ์ ๋ก๋ ์ ์์ถ |
์บ์ฑ ์ ๋ต | ํด๋ผ์ด์ธํธยท์๋ฒ ์์ชฝ์์ ์ ์ฉ |
์ฑ๋ฅ ๋ชจ๋ํฐ๋ง | Sentry, React Profiler, Lighthouse ๋ฑ ์ฐ๋ |
๋ ๋๋ง ๋ถ์ | ๋ฉ๋ชจ๋ฆฌ/์๊ฐ/๋คํธ์ํฌ ์์ฒญ ๊ฐ์ ๋ชฉํ |
๐งพ ๊ฒฐ๋ก ๋ฐ ์ ๋ฆฌ
์ด๋ฒ ์ด๋ฏธ์ง ๊ธฐ๋ฅ ๋ฆฌํฉํ ๋ง์ ํตํด ๋ค์๊ณผ ๊ฐ์ ํจ๊ณผ๋ฅผ ์ป์์ต๋๋ค:
- ๐ก ์ปดํฌ๋ํธ ๊ตฌ์กฐ ๊ฐ์ โ ์ ์ง๋ณด์์ฑ ํฅ์
- ๐ ๋ ๋๋ง/API ํธ์ถ ์ฑ๋ฅ ํฅ์
- ๐ ์ฌ์ฉ์ ๊ฒฝํ ์ ๋ฐ์ ์ง์ ํฅ์
๐ ๋ค์ ๋จ๊ณ
- ๊ธฐ๋ฅ๋ณ ํ ์คํธ ์ฝ๋ ์ถ๊ฐ
- ๊ฐ์ ๋ ๋ก์ง ๊ธฐ๋ฐ์ผ๋ก ๊ธฐ์ ๋ฌธ์ํ
- ๋ชจ๋ํฐ๋ง ํ๊ฒฝ ๊ตฌ์ถ ๋ฐ ์ง์์ ์ธ ์ฑ๋ฅ ํธ๋ํน
์ด์ ๋ ๋จ์ํ โ์๋ํ๋ ๊ธฐ๋ฅโ์ ๋์ด์, ์ฑ๋ฅ๊ณผ ๊ฒฝํ ๋ชจ๋๋ฅผ ๋ง์กฑ์ํค๋ ๊ตฌ์กฐ๋ก ๋์ฝํ์ต๋๋ค. PHOBUM์ ์ด๋ฏธ์ง ์ฒ๋ฆฌ ๊ธฐ๋ฅ์ ์์ผ๋ก๋ ๊ณ์ ๋ฐ์ ํ ์์ ์ ๋๋ค. ๐ช
๋๊ธ๋จ๊ธฐ๊ธฐ