Vue 3 ๊ด๋ฆฌ์ UI ์ฑ๋ฅ ์ฒดํฌ๋ฆฌ์คํธ โ ๋ฌด๊ฑฐ์ด ๋ชฉ๋ก์ ๋ ๋น ๋ฅด๊ฒ
์ด Vue 3 ๊ด๋ฆฌ์ UI ์ฑ๋ฅ ์ฒดํฌ๋ฆฌ์คํธ๋ก ๊ฐ์ํ, ๋๋ฐ์ด์ค ๊ฒ์, ์ปดํฌ๋ํธ ๋ฉ๋ชจ์ด์ ์ด์ ๋ฐ ๋ ๋์ ๋ก๋ฉ ์ํ๋ฅผ ์ ์ฉํด ๋ฌด๊ฑฐ์ด ๋ชฉ๋ก์ ๋ ๋น ๋ฅด๊ฒ ํ์ธ์.

๋ฌด๊ฑฐ์ด ๊ด๋ฆฌ์ ๋ชฉ๋ก์ด ๋๋ฆฌ๊ฒ ๋๊ปด์ง๋ ์ด์
์ฌ์ฉ์๋ ๋ณดํต "์ด ์ปดํฌ๋ํธ๊ฐ ๋นํจ์จ์ ์ด๋ค"๊ณ ๋งํ์ง ์์ต๋๋ค. ํ๋ฉด์ด ๋์ ๊ฑฐ๋ฆฌ๊ฑฐ๋ ์คํฌ๋กค์ด ๋๊ธฐ๊ณ , ์ ๋ ฅ์ด ๋๋ ค์ง๊ณ , ํด๋ฆญ์ด ํ ๋ฐ์ ๋ฆ๊ฒ ๋ฐ์ํ๋ค๊ณ ๋๋๋๋ค. ๋ฐ์ดํฐ๊ฐ ๋ง๋๋ผ๋ ๊ทธ ์ง์ฐ์ ์ฌ์ฉ์์ ์ ๋ขฐ๋ฅผ ํ๋ค๊ฒ ๋ฉ๋๋ค.
๊ด๋ฆฌ์ UI๋ ๋น ๋ฅด๊ฒ ๋ฌด๊ฑฐ์์ง๋๋ค. ๋ชฉ๋ก์ ๋จ์ํ "๋ฆฌ์คํธ"๊ฐ ์๋๊ธฐ ๋๋ฌธ์ ๋๋ค. ํ๋์ ํ ์ด๋ธ์ ์์ฒ ๊ฐ ํ, ๋ง์ ์ด, ๋ฐฐ์ง, ๋ฉ๋ด, ์๋ฐํ, ํดํ, ์ธ๋ผ์ธ ์๋ํฐ ๊ฐ์ ์ปค์คํ ์ ์ด ๋ค์ด๊ฐ ์ ์์ต๋๋ค. ์ ๋ ฌ, ์ฌ๋ฌ ํํฐ, ๋ผ์ด๋ธ ๊ฒ์๊น์ง ๋ํ๋ฉด ์์ ๋ณํ์๋ ํ์ด์ง๊ฐ ๋ง์ ์ผ์ ํ๊ฒ ๋ฉ๋๋ค.
์ฌ๋๋ค์ด ๋จผ์ ์์์ฐจ๋ฆฌ๋ ๊ฒ์ ๋จ์ํฉ๋๋ค: ์คํฌ๋กค์ด ํ๋ ์์ ๋จ์ด๋จ๋ฆฌ๊ณ , ๊ฒ์์ ์๊ฐ๋ฝ ๋ค์ ์๊ณ , ํ ๋ฉ๋ด๊ฐ ๋๋ฆฌ๊ฒ ์ด๋ฆฌ๊ณ , ๋๋ ์ ํ์ด ๋ฉ์ถ๊ณ , ๋ก๋ฉ ์ํ๊ฐ ๊น๋นก์ด๊ฑฐ๋ ํ์ด์ง๊ฐ ๋ฆฌ์ ๋ฉ๋๋ค.
๋ด๋ถ์ ์ผ๋ก๋ ํจํด์ ๊ฐ๋จํฉ๋๋ค: ๋๋ฌด ๋ง์ ๊ฒ์ด ๋๋ฌด ์์ฃผ ์ฌ๋ ๋๋ง๋ฉ๋๋ค. ํค ์ ๋ ฅ์ ํํฐ๋ง์ ํธ๋ฆฌ๊ฑฐํ๊ณ , ํํฐ๋ง์ ํ ์ด๋ธ ์ ๋ฐ์ดํธ๋ฅผ ํธ๋ฆฌ๊ฑฐํ๋ฉฐ, ๋ชจ๋ ํ์ด ์ ์ ๋ค์ ๋น๋ํฉ๋๋ค. ๊ฐ ํ์ด ๊ฐ๋ณ๋ค๋ฉด ๊ด์ฐฎ์ง๋ง, ๊ฐ ํ์ด ์ฌ์ค์ ์์ ์ฑ์ด๋ผ๋ฉด ๋งค๋ฒ ๋น์ฉ์ ์น๋ฅด๊ฒ ๋ฉ๋๋ค.
Vue 3 ๊ด๋ฆฌ์ UI ์ฑ๋ฅ ์ฒดํฌ๋ฆฌ์คํธ์ ๋ชฉ์ ์ ๋ฒค์น๋งํฌ์์ ์ด๊ธฐ๋ ๊ฒ์ด ์๋๋๋ค. ํ์ดํ์ ๋ถ๋๋ฝ๊ฒ, ์คํฌ๋กค์ ์์ ์ ์ผ๋ก, ํด๋ฆญ์ ์ฆ๊ฐ์ ์ผ๋ก ๋ง๋ค๊ณ , ์ฌ์ฉ์ ํ๋ฆ์ ๋์ง ์์ผ๋ฉด์ ์งํ ์ํฉ์ ๋ณด์ฌ์ฃผ๋ ๊ฒ์ ๋๋ค.
์ข์ ์์์: ์์ ๋ณ๊ฒฝ๋ค์ด ์ข ์ข ํฐ ์ฌ์์ฑ๋ณด๋ค ํจ๊ณผ๊ฐ ํฝ๋๋ค. ๋ ๋๋ง๋๋ ํ ์๋ฅผ ์ค์ด๊ณ (๊ฐ์ํ), ํค ์ ๋ ฅ๋น ์์ ์ ์ค์ด๋ฉฐ(๋๋ฐ์ด์ค), ๋น์ฉ์ด ํฐ ์ ์ด ์ฌ์คํ๋์ง ์๊ฒ ํ๊ณ (๋ฉ๋ชจ์ด์ ์ด์ ), ํ์ด์ง๊ฐ ํ์ง ์๊ฒ ๋ก๋ฉ ์ํ๋ฅผ ์ค๊ณํ์ธ์.
๋ณ๊ฒฝํ๊ธฐ ์ ์ ์ธก์ ํ์ธ์
๊ธฐ์ค ์์ด ํ๋ํ๋ฉด ์๋ชป๋ ๊ฒ์ "๊ณ ์น" ์ ์ด ๋๊ธฐ ์ฝ์ต๋๋ค. ๋๋ฆฐ ๊ด๋ฆฌ์ ํ๋ฉด ํ๋(์ฌ์ฉ์ ํ ์ด๋ธ, ํฐ์ผ ํ, ์ฃผ๋ฌธ ๋ชฉ๋ก ๋ฑ)๋ฅผ ๊ณจ๋ผ ์ฒด๊ฐ ๊ฐ๋ฅํ ๋ชฉํ๋ฅผ ์ ์ํ์ธ์: ์คํฌ๋กค์ด ๋น ๋ฅด๊ณ ๊ฒ์ ์ ๋ ฅ์ด ์ ํ ์ง์ฐ๋์ง ์๋ ๊ฒ.
๋๋ ค์ง๋ ์ํฉ์ ์ฌํํ ๋ค์ ํ๋กํ์ผ๋งํ์ธ์.
๋ธ๋ผ์ฐ์ Performance ํจ๋์์ ์งง์ ์ธ์ ์ ๋ นํํฉ๋๋ค: ๋ชฉ๋ก์ ๋ก๋ํ๊ณ ๋ช ์ด๊ฐ ์ธ๊ฒ ์คํฌ๋กคํ ๋ค์ ๊ฒ์์ ์ ๋ ฅํ์ธ์. ๋ฉ์ธ ์ค๋ ๋์ ๊ธด ์์ ๊ณผ ์๋ฌด ๊ฒ๋ ๋ฐ๋์ง ์์์ผ ํ ๋ ๋ฐ๋ณต๋๋ ๋ ์ด์์/ํ์ธํธ ์์ ์ ์ฐพ์ผ์ธ์.
๊ทธ๋ฐ ๋ค์ Vue Devtools๋ฅผ ์ด์ด ์ค์ ๋ก ๋ฌด์์ด ์ฌ๋ ๋๋ง๋๋์ง ํ์ธํ์ธ์. ํ ํค ์ ๋ ฅ์ด ํ ์ด๋ธ ์ ์ฒด, ํํฐ, ํ์ด์ง ํค๋๋ฅผ ์ ๋ถ ์ฌ๋ ๋๋งํ๋ค๋ฉด ๋ณดํต ์ ๋ ฅ ์ง์ฐ์ ์์ธ์ด ๋ฉ๋๋ค.
๋์ค์ ๊ฐ์ ์ ํ์ธํ ์ ์๋๋ก ๋ช ๊ฐ์ง ์์น๋ฅผ ์ถ์ ํ์ธ์:
- ์ฒซ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ชฉ๋ก ์๊ฐ(๋จ์ ์คํผ๋๊ฐ ์๋ ์ค์ ๋ฆฌ์คํธ๊ฐ ๋ณด์ด๋ ์๊ฐ)
- ์คํฌ๋กค ๊ฐ์ด(๋ถ๋๋ฌ์ด์ง ๋๊ธฐ๋์ง)
- ์ ๋ ฅ ์ ์ง์ฐ(ํ ์คํธ๊ฐ ์ฆ์ ํ์๋๋๊ฐ)
- ํ ์ด๋ธ ์ปดํฌ๋ํธ ๋ ๋ ์ง์ ์๊ฐ
- ๋ชฉ๋ก API ํธ์ถ์ ๋คํธ์ํฌ ์๊ฐ
๋ง์ง๋ง์ผ๋ก ๋ณ๋ชฉ์ด ์ด๋์ธ์ง ํ์ธํ์ธ์. ๋น ๋ฅธ ํ ์คํธ๋ ๋คํธ์ํฌ ์์ธ์ ์ค์ฌ๋ณด๋ ๊ฒ์ ๋๋ค. ์บ์๋ ๋ฐ์ดํฐ๋ก๋ UI๊ฐ ์ฌ์ ํ ๋๊ธฐ๋ฉด ๋๋ถ๋ถ ๋ ๋๋ง ๋ฌธ์ ์ ๋๋ค. UI๊ฐ ๋ถ๋๋ฝ์ง๋ง ๊ฒฐ๊ณผ๊ฐ ๋ฆ๊ฒ ๋์ฐฉํ๋ฉด ๋คํธ์ํฌ ์๊ฐ, ์ฟผ๋ฆฌ ํฌ๊ธฐ, ์๋ฒ ์ธก ํํฐ๋ง์ ์ง์คํ์ธ์.
ํฐ ๋ชฉ๋ก๊ณผ ํ ์ด๋ธ์ ๊ฐ์ํํ์ธ์
๊ด๋ฆฌ์ ํ๋ฉด์ด ํ ๋ฒ์ ์๋ฐฑ ๋๋ ์์ฒ ๊ฐ ํ์ ๋ ๋๋งํ ๋ ๊ฐ์ํ๊ฐ ๊ฐ์ฅ ํฐ ์น๋ฆฌ์ธ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ๋ชจ๋ ํ์ DOM์ ๋ฃ๋ ๋์ ๋ทฐํฌํธ์ ๋ณด์ด๋ ๊ฒ(์์ ๋ฒํผ ํฌํจ)๋ง ๋ ๋๋งํ๋ฉด ๋ ๋ ์๊ฐ๊ณผ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ ์ค์ด๊ณ ์คํฌ๋กค์ด ์์ ์ ์ผ๋ก ๋๊ปด์ง๋๋ค.
์ ์ ํ ์ ๊ทผ ๋ฐฉ์ ์ ํ
๊ฐ์ ์คํฌ๋กค(์๋์)์ ์ฌ์ฉ์๊ฐ ๊ธด ๋ฐ์ดํฐ์ ์ ๋งค๋๋ฝ๊ฒ ์คํฌ๋กคํด์ผ ํ ๋ ์ต์ ์ ๋๋ค. ํ์ด์ง๋ค์ด์ ์ ์ฌ์ฉ์๊ฐ ํ์ด์ง ๋จ์๋ก ์ ํํ๊ณ ์๋ฒ ์ธก ์ฟผ๋ฆฌ๋ฅผ ๋จ์ํ๊ฒ ์ ์งํ๊ณ ์ถ์ ๋ ๋ ๋ซ์ต๋๋ค. "๋ ๋ณด๊ธฐ ๋ก๋" ํจํด์ ์ปจํธ๋กค์ ์ต์ํํ๋ฉด์๋ ๊ฑฐ๋ํ DOM ํธ๋ฆฌ๋ฅผ ํผํ๊ณ ์ถ์ ๋ ์ ์ฉํฉ๋๋ค.
๋๋ต์ ์ธ ๊ท์น:
- 0โ200 ํ: ๋ณดํต ๋ ๋๋ง์ผ๋ก๋ ๊ด์ฐฎ์ ๊ฒฝ์ฐ๊ฐ ๋ง์
- 200โ2,000 ํ: UX์ ๋ฐ๋ผ ๊ฐ์ํ ๋๋ ํ์ด์ง๋ค์ด์
- 2,000+ ํ: ๊ฐ์ํ์ ์๋ฒ ์ธก ํํฐ๋ง/์ ๋ ฌ ๋ณํ
๊ฐ์ํ๋ฅผ ์์ ์ ์ผ๋ก ๋ง๋ค๊ธฐ
๊ฐ์ ๋ชฉ๋ก์ ๊ฐ ํ์ ๋์ด๊ฐ ์์ธก ๊ฐ๋ฅํ ๋ ๊ฐ์ฅ ์ ์๋ํฉ๋๋ค. ๋ ๋ ํ ํ ๋์ด๊ฐ ๋ฐ๋๋ฉด(์ด๋ฏธ์ง ๋ก๋, ํ ์คํธ ์ค๋ฐ๊ฟ, ํ์ฅ ์น์ ) ์คํฌ๋กค๋ฌ๊ฐ ์ฌ์ธก์ ํด์ผ ํ๊ณ ์ด๋ก ์ธํด ์คํฌ๋กค์ด ํ๊ณ ๋ ์ด์์์ด ์๋์นฉ๋๋ค.
์์ ์ ์ผ๋ก ์ ์งํ๋ ค๋ฉด:
- ๊ฐ๋ฅํ๋ฉด ๊ณ ์ ํ ๋์ด๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ๋ช ๊ฐ์ง ์๋ ค์ง ๋์ด ์งํฉ์ ์ฌ์ฉํ์ธ์
- ๊ฐ๋ณ ์ฝํ ์ธ (ํ๊ทธ, ๋ฉ๋ชจ)๋ ์๋ผ๋ด๊ณ ์์ธํ ๋ณด๊ธฐ์์ ๋ ธ์ถํ์ธ์
- ํ๋ง๋ค ๊ฐํ ๊ณ ์ ํค๋ฅผ ์ฌ์ฉํ์ธ์(์ ๋ ๋ฐฐ์ด ์ธ๋ฑ์ค ์ฌ์ฉ ๊ธ์ง)
- ์คํฐํค ํค๋๋ ๊ฐ์ํ๋ ๋ณธ๋ฌธ ๋ฐ์ ๋์ธ์
- ๊ฐ๋ณ ๋์ด๋ฅผ ์ง์ํด์ผ ํ๋ค๋ฉด ์ธก์ ์ ํ์ฑํํ๊ณ ์ ์ ๋จ์ํ๊ฒ ์ ์งํ์ธ์
์: ํฐ์ผ ํ ์ด๋ธ์ 10,000ํ์ด ์๋ค๋ฉด ํ ์ด๋ธ ๋ณธ๋ฌธ์ ๊ฐ์ํํ๊ณ ํ ๋์ด๋ฅผ ์ผ๊ด๋๊ฒ ์ ์งํ์ธ์(์ํ, ์ ๋ชฉ, ๋ด๋น์ ์ ๋๋ง). ๊ธด ๋ฉ์์ง๋ ์์ธ ๋๋ก์ด ๋ค๋ก ์จ๊ฒจ ์คํฌ๋กค์ ๋ถ๋๋ฝ๊ฒ ์ ์งํ์ธ์.
๋๋ฐ์ด์ค ๊ฒ์๊ณผ ๋ ๋๋ํ ํํฐ๋ง
๊ฒ์ ์์๋ ๋น ๋ฅธ ํ ์ด๋ธ์ ๋๋ฆฌ๊ฒ ๋ง๋ค ์ ์์ต๋๋ค. ๋ฌธ์ ์ ํต์ฌ์ ๋ณดํต ํํฐ ์์ฒด๊ฐ ์๋๋๋ค. ๊ฐ ํค ์ ๋ ฅ์ด ๋ ๋, ์์ฒ, ๊ทธ๋ฆฌ๊ณ ์ข ์ข ์์ฒญ์ ์ฐ์์ ์ผ๋ก ํธ๋ฆฌ๊ฑฐํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
๋๋ฐ์ด์ค๋ "์ฌ์ฉ์๊ฐ ํ์ดํ์ ๋ฉ์ถ ๋ค ์ ์ ๊ธฐ๋ค๋ ธ๋ค๊ฐ ํ ๋ฒ๋ง ๋์"ํ๋ ๊ฒ์ ๋๋ค. ๋๋ถ๋ถ์ ๊ด๋ฆฌ์ ํ๋ฉด์์ 200โ400ms๋ ๋ฐ์์ฑ์ด ์ข๊ณ ๋จ๋ฆผ์ด ์ ์ ์ ์ ํ ๋ฒ์์ ๋๋ค. ๋ํ ๊ณต๋ฐฑ์ ์ ๋ฆฌํ๊ณ ๋ฐ์ดํฐ์ ๋ง๋ค๋ฉด 2โ3์ ๋ฏธ๋ง์ ๊ฒ์์ ๋ฌด์ํ๋ ๊ฒ๋ ๊ณ ๋ คํ์ธ์.
ํํฐ๋ง ์ ๋ต์ ๋ฐ์ดํฐ์ ํฌ๊ธฐ์ ๊ท์น์ ๋ง์ถฐ์ผ ํฉ๋๋ค:
- ๋ช ๋ฐฑ ํ ์ดํ๋ก ์ด๋ฏธ ๋ก๋๋์ด ์๋ค๋ฉด ํด๋ผ์ด์ธํธ ํํฐ๋ง์ผ๋ก ์ถฉ๋ถํจ
- ์์ฒ ํ์ด๊ฑฐ๋ ๊ถํ ๊ด๋ฆฌ๊ฐ ์๊ฒฉํ๋ฉด ์๋ฒ์ ์ฟผ๋ฆฌํ์ธ์
- ํํฐ๊ฐ ๋น์ฉ์ด ํฐ(๋ ์ง ๋ฒ์, ์ํ ๋ก์ง ๋ฑ) ๊ฒฝ์ฐ ์๋ฒ๋ก ๋ฐ์ด๋ผ
- ๋ ๋ค ํ์ํ๋ฉด ํผํฉ ์ ๊ทผ: ๋น ๋ฅธ ํด๋ผ์ด์ธํธ ์ขํ๊ธฐ ํ ์ต์ข ๊ฒฐ๊ณผ๋ ์๋ฒ์์
์๋ฒ๋ฅผ ํธ์ถํ ๋ ์ค๋๋ ๊ฒฐ๊ณผ๋ฅผ ์ฒ๋ฆฌํ์ธ์. ์ฌ์ฉ์๊ฐ "inv"๋ฅผ ์
๋ ฅํ ๋ค ๋น ๋ฅด๊ฒ "invoice"๋ฅผ ์์ฑํ๋ฉด ์ด์ ์์ฒญ์ด ๋ฆ๊ฒ ๋์์ UI๋ฅผ ๋ฎ์ด์ธ ์ ์์ต๋๋ค. ์ด์ ์์ฒญ์ ์ทจ์(์: AbortController ๋๋ HTTP ํด๋ผ์ด์ธํธ์ ์ทจ์ ๊ธฐ๋ฅ)ํ๊ฑฐ๋ ์์ฒญ id๋ฅผ ์ถ์ ํด ์ต์ ๊ฒ์ด ์๋๋ฉด ๋ฌด์ํ์ธ์.
๋ก๋ฉ ์ํ๋ ์๋๋งํผ ์ค์ํฉ๋๋ค. ๋งค ํค ์ ๋ ฅ๋ง๋ค ์ ์ฒด ํ์ด์ง ์คํผ๋๋ฅผ ์ฐ์ง ๋ง์ธ์. ๋ ์ฐจ๋ถํ ํ๋ฆ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค: ์ฌ์ฉ์๊ฐ ํ์ดํํ๋ ๋์ ์๋ฌด ํ์๋ฅผ ํ์ง ๋ง๊ณ , ์ฑ์ด ์ค์ ๋ก ๊ฒ์ ์ค์ผ ๋๋ ์ ๋ ฅ ์ฃผ๋ณ์ ์์ ์ธ๋ผ์ธ ์ธ๋์ผ์ดํฐ๋ฅผ ๋ณด์ฌ์ฃผ๋ฉฐ, ๊ฒฐ๊ณผ๊ฐ ์ ๋ฐ์ดํธ๋ ๋๋ "42๊ฐ ๊ฒฐ๊ณผ ํ์" ๊ฐ์ ๋ฏธ๋ฌํ๊ณ ๋ช ํํ ๋ฌธ๊ตฌ๋ฅผ ๋ณด์ฌ์ฃผ์ธ์. ๊ฒฐ๊ณผ๊ฐ ์์ผ๋ฉด ๋น ๊ทธ๋ฆฌ๋๋ฅผ ๋ด๋ฒ๋ ค๋์ง ๋ง๊ณ "์ผ์นํ๋ ํญ๋ชฉ ์์"์ด๋ผ๊ณ ํ์ํ์ธ์.
๋ฉ๋ชจ์ด์ ์ด์ ์ปดํฌ๋ํธ์ ์์ ์ ๋ ๋๋ง
๋ง์ ๋๋ฆฐ ๊ด๋ฆฌ์ ํ ์ด๋ธ์ "๋ฐ์ดํฐ๊ฐ ๋๋ฌด ๋ง์์" ๋๋ฆฐ ๊ฒ์ด ์๋๋ผ ๋์ผํ ์ ์ด ๋ฐ๋ณตํด์ ์ฌ๋ ๋๋ง๋๊ธฐ ๋๋ฌธ์ ๋๋ฆฝ๋๋ค.
์ฌ๋ ๋๋ง ์์ธ ์ฐพ๊ธฐ
๋ฐ๋ณต ์ ๋ฐ์ดํธ๋ ๋ณดํต ๋ค์ ์ต๊ด๋ค์์ ์ต๋๋ค:
- ํ์ํ ๋ช ํ๋๋ง ์ฐ๋๋ฐ ํฐ ๋ฐ์ํ ๊ฐ์ฒด๋ฅผ props๋ก ์ ๋ฌ
- ํ ํ๋ฆฟ์ ์ธ๋ผ์ธ ํจ์ ์์ฑ(๋งค ๋ ๋๋ง๋ค ์๋ก ์์ฑ)
- ํฐ ๋ฐฐ์ด์ด๋ ํ ๊ฐ์ฒด์ ๋ํ deep watcher ์ฌ์ฉ
- ํ ํ๋ฆฟ ์์์ ๋งค ์ ๋ง๋ค ์๋ก์ด ๋ฐฐ์ด์ด๋ ๊ฐ์ฒด ์์ฑ
- ๊ฐ ์ ๋ฐ์ดํธ๋ง๋ค ํฌ๋งทํ ์์ (๋ ์ง, ํตํ, ํ์ฑ)์ ์ํ
props์ ํธ๋ค๋ฌ์ ์๋ณ์๊ฐ ๋ฐ๋๋ฉด Vue๋ ์์์ด ์ ๋ฐ์ดํธ๋ ์ ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค, ๋น๋ก ๋ณด์ด๋ ๊ฒ์ด ๋ฐ๋์ง ์์๋ค ํด๋.
props๋ฅผ ์์ ํํ๊ณ ๋ฉ๋ชจ์ด์ ์ด์ ์ ์ฉ
์๊ฒ ์์ํ์ธ์: ๋ ์์, ์์ ๋ props๋ฅผ ์ ๋ฌํ์ธ์. ๋ชจ๋ ์
์ ์ ์ฒด row ๊ฐ์ฒด๋ฅผ ์ ๋ฌํ๋ ๋์ row.id์ ์
์ด ๋ณด์ฌ์ค ํน์ ํ๋๋ง ์ ๋ฌํ์ธ์. ํ์๊ฐ์ computed๋ก ์ฎ๊ฒจ ์
๋ ฅ์ด ๋ฐ๋ ๋๋ง ์ฌ๊ณ์ฐ๋๊ฒ ํ์ธ์.
ํ์ ์ผ๋ถ๊ฐ ๊ฑฐ์ ๋ณํ์ง ์๋๋ค๋ฉด v-memo๊ฐ ๋์์ด ๋ฉ๋๋ค. ์์ ๋ ์
๋ ฅ(์: row.id, row.status)์ ๊ธฐ์ค์ผ๋ก ์ ์ ๋ถ๋ถ์ ๋ฉ๋ชจ์ด์ ์ด์
ํ๋ฉด ๊ฒ์ ์
๋ ฅ์ด๋ ํ ํธ๋ฒ๊ฐ ๋ชจ๋ ์
์ ๋ค์ ์คํํ์ง ์๋๋ก ํ ์ ์์ต๋๋ค.
๋ํ ๋น์ฉ์ด ํฐ ์์
์ ๋ ๋ ๊ฒฝ๋ก ๋ฐ์ผ๋ก ๋นผ์ธ์. ๋ ์ง๋ฅผ ํ ๋ฒ๋ง ํฌ๋งทํด์ id๋ณ computed ๋งต์ ์ ์ฅํ๊ฑฐ๋ ์๋ฒ์์ ํฌ๋งทํด์ ๋ด๋ ค์ฃผ๋ ๊ฒ์ด ์ ๋ฆฌํฉ๋๋ค. ํํ ์ค์ ์ด๋์ "์ต์ข
์
๋ฐ์ดํธ" ์ด์ด ์๋ฐฑ ํ์ ๋ํด ๋งค๋ฒ new Date()๋ฅผ ํธ์ถํ์ง ์๊ฒ ํ๋ ๊ฒ์
๋๋ค.
๋ชฉํ๋ ๊ฐ๋จํฉ๋๋ค: ์๋ณ์๋ฅผ ์์ ํํ๊ณ , ํ ํ๋ฆฟ ๋ฐ์ผ๋ก ์ผ์ ๋นผ๋ฉฐ, ์ค์ ๋ก ๋ณํ ๊ฒ๋ง ์ ๋ฐ์ดํธํ์ธ์.
์ฒด๊ฐ ์๋๊ฐ ๋น ๋ฅธ ์ค๋งํธํ ๋ก๋ฉ ์ํ
๋ชฉ๋ก์ด ์ค์ ๋ณด๋ค ๋๋ฆฌ๊ฒ ๋๊ปด์ง๋ ์ด์ ์ค ํ๋๋ UI๊ฐ ๊ณ์ ํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ข์ ๋ก๋ฉ ์ํ๋ ๊ธฐ๋ค๋ฆผ์ ์์ธก ๊ฐ๋ฅํ๊ฒ ๋ง๋ญ๋๋ค.
์ค์ผ๋ ํค ํ์ ๋ฐ์ดํฐ ํํ(ํ ์ด๋ธ, ์นด๋, ํ์๋ผ์ธ ๋ฑ)๋ฅผ ์ ์ ์์ ๋ ์ ์ฉํฉ๋๋ค. ์คํผ๋๋ ์ฌ์ฉ์๊ฐ ๋ฌด์์ ๊ธฐ๋ค๋ฆฌ๋์ง ์๋ ค์ฃผ์ง ์์ต๋๋ค. ์ค์ผ๋ ํค์ ๋ช ๊ฐ ํ์ด ์ฌ์ง, ์ก์ ์ด ์ด๋์ ๋ํ๋ ์ง, ๋ ์ด์์์ด ์ด๋ป๊ฒ ์๊ฒผ๋์ง๋ฅผ ๋ฏธ๋ฆฌ ๋ณด์ฌ์ค๋๋ค.
๋ฐ์ดํฐ๋ฅผ ์๋ก๊ณ ์นจํ ๋(ํ์ด์ง, ์ ๋ ฌ, ํํฐ) ์ ์์ฒญ์ด ์ฒ๋ฆฌ๋๋ ๋์ ์ด์ ๊ฒฐ๊ณผ๋ฅผ ํ๋ฉด์ ์ ์งํ์ธ์. ์์ "์๋ก๊ณ ์นจ ์ค" ํํธ๋ฅผ ๋ณด์ฌ์ฃผ๋ฉด ํ์ด์ง๋ฅผ ๋น์ฐ๋ ๊ฒ๋ณด๋ค ์ฌ์ฉ์๊ฐ ์ฝ๊ฑฐ๋ ํ์ธ์ ๊ณ์ํ ์ ์์ต๋๋ค.
๋ถ๋ถ ๋ก๋ฉ์ด ์ ์ฒด ์ฐจ๋จ๋ณด๋ค ๋ซ๋ค
๋ชจ๋ ๊ฒ์ด ๋ฉ์ถ ํ์๋ ์์ต๋๋ค. ํ ์ด๋ธ์ด ๋ก๋ฉ ์ค์ด๋ผ๋ฉด ํํฐ ๋ฐ๋ ๋ณด์ด๋ ์ผ์์ ์ผ๋ก ๋นํ์ฑํํ์ธ์. ํ ์ก์ ์ ์ถ๊ฐ ๋ฐ์ดํฐ๊ฐ ํ์ํ๋ฉด ํด๋ฆญํ ํ์๋ง ๋๊ธฐ ์ํ๋ฅผ ๋ณด์ฌ์ฃผ์ธ์.
์์ ๋ ํจํด ์์:
- ์ต์ด ๋ก๋: ์ค์ผ๋ ํค ํ
- ์๋ก๊ณ ์นจ: ์ด์ ํ ์ ์ง, ์์ "์ ๋ฐ์ดํธ ์ค" ํํธ ํ์
- ํํฐ: ํ์น ์ค ์ผ์ ๋นํ์ฑํํ๋ ์์น๋ ์์ง์ด์ง ์์
- ํ ์ก์ : ํ ๋จ์ ๋๊ธฐ ์ํ
- ์ค๋ฅ: ๋ ์ด์์์ ๋ฌด๋๋จ๋ฆฌ์ง ์๋ ์ธ๋ผ์ธ ํ์
๋ ์ด์์ ํ๋ค๋ฆผ ๋ฐฉ์ง
๋๊ตฌ ๋ชจ์, ๋น ์ํ, ํ์ด์ง๋ค์ด์ ๊ณต๊ฐ์ ๋ฏธ๋ฆฌ ํ๋ณดํด ๊ฒฐ๊ณผ๊ฐ ๋ฐ๋ ๋ ์ปจํธ๋กค์ด ์์ง์ด์ง ์๊ฒ ํ์ธ์. ํ ์ด๋ธ ์์ญ์ ๊ณ ์ ์ต์ ๋์ด๋ฅผ ๋๊ณ ํค๋/ํํฐ ๋ฐ๋ฅผ ํญ์ ๋ ๋๋งํ๋ฉด ํ์ด์ง ์ ํ๋ฅผ ํผํ ์ ์์ต๋๋ค.
๊ตฌ์ฒด์ ์: ํฐ์ผ ํ๋ฉด์์ "์ด๋ฆผ"์์ "ํด๊ฒฐ"๋ก ์ ํํ ๋ ๋ชฉ๋ก์ด ๋น ์ํ๋ก ๋ฐ๋์ง ์๊ฒ ํ์ธ์. ํ์ฌ ํ์ ์ ์งํ๊ณ ์ํ ํํฐ๋ฅผ ์ ์ ๋นํ์ฑํํ ๋ค ์ ๋ฐ์ดํธ๋ ํฐ์ผ์๋ง ๋๊ธฐ ์ํ๋ฅผ ๋ณด์ฌ์ค๋๋ค.
ํ ์คํ ๋ง์ ๋๋ฆฐ ๋ชฉ๋ก ๊ณ ์น๊ธฐ ๋จ๊ณ๋ณ ๊ฐ์ด๋
๋๋ฆฐ ํ๋ฉด ํ๋๋ฅผ ๊ณจ๋ผ ์์ ์๋ฆฌ์ฒ๋ผ ์ ๊ทผํ์ธ์. ๋ชฉํ๋ ์๋ฒฝ์ด ์๋๋ผ ์คํฌ๋กค๊ณผ ํ์ดํ์์ ์ฒด๊ฐ๋๋ ๋ช ํํ ๊ฐ์ ์ ๋๋ค.
๋น ๋ฅธ ์คํ ๊ณํ
๋จผ์ ์ ํํ ๋ฌธ์ ๋ฅผ ์ด๋ฆ ๋ถ์ด์ธ์. ํ์ด์ง๋ฅผ ์ด๊ณ ์ธ ๊ฐ์ง๋ฅผ ํด๋ณด์ธ์: ๋น ๋ฅด๊ฒ ์คํฌ๋กค, ๊ฒ์ ์์์ ์ ๋ ฅ, ํ์ด์ง๋ ํํฐ ๋ณ๊ฒฝ. ๋ณดํต ์ด ์ค ํ๋๋ง ์ฌ๊ฐํ๊ฒ ๊นจ์ ธ ์๊ณ , ๊ทธ๊ฒ์ด ๋ฌด์์ ๋จผ์ ๊ณ ์ณ์ผ ํ ์ง ์๋ ค์ค๋๋ค.
๊ทธ๋ค์ ๊ฐ๋จํ ์์๋ฅผ ๋ฐ๋ฅด์ธ์:
- ๋ณ๋ชฉ ํ์ : ๋๊ธฐ๋ ์คํฌ๋กค, ๋๋ฆฐ ํ์ดํ, ๋๋ฆฐ ๋คํธ์ํฌ ์๋ต ๋๋ ํผํฉ์ธ์ง ํ์ธ
- DOM ํฌ๊ธฐ ์ค์ด๊ธฐ: ๊ฐ์ํํ๊ฑฐ๋ ๊ธฐ๋ณธ ํ์ด์ง ํฌ๊ธฐ ์ค์ด๊ธฐ
- ๊ฒ์ ์ง์ : ์ ๋ ฅ ๋๋ฐ์ด์ค์ ์ค๋๋ ์์ฒญ ์ทจ์ ์ถ๊ฐ
- ํ ์์ ํ: ์ผ๊ด๋ ํค, ํ ํ๋ฆฟ์์ ์ ๊ฐ์ฒด ์์ฑ ๊ธ์ง, ๋ฐ์ดํฐ๊ฐ ๋ณํ์ง ์๋ ๊ฒฝ์ฐ ํ ๋ ๋ ๋ฉ๋ชจ์ด์ ์ด์
- ์ฒด๊ฐ ์๋ ๊ฐ์ : ์ ์ฒด ํ์ด์ง ์ค๋ฒ๋ ์ด ๋์ ํ ์์ค ์ค์ผ๋ ํค์ด๋ ์ธ๋ผ์ธ ์คํผ๋
๊ฐ ๋จ๊ณ ํ ๋์ผํ ๋ฌธ์ ํ๋์ ์ฌํ ์คํธํ์ธ์. ๊ฐ์ํ๋ก ์คํฌ๋กค์ด ๋ถ๋๋ฌ์์ง๋ฉด ๋ค์์ผ๋ก ๋์ด๊ฐ๊ณ , ํ์ดํ์ด ์ฌ์ ํ ๋๋ฆฌ๋ฉด ๋๋ฐ์ด์ค์ ์์ฒญ ์ทจ์๊ฐ ๋ค์ ์ฐ์ ์์์ ๋๋ค.
๋ณต์ฌํด์ ์ธ ์ ์๋ ์์ ์์
์ฌ์ฉ์ 10,000ํ ํ ์ด๋ธ์ ์๋ก ๋ค์ด๋ด ๋๋ค. ์คํฌ๋กค์ด ๋ฒ๋ฒ ์ด๋ ์ด์ ๋ ๋ธ๋ผ์ฐ์ ๊ฐ ๋๋ฌด ๋ง์ ํ์ ํ์ธํธํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ฐ์ํํด์ ๋ณด์ด๋ ํ๋ง ๋ ๋๋งํ์ธ์.
๊ทธ๋ค์ ๊ฒ์์ ๋งค ํค ์
๋ ฅ๋ง๋ค ์์ฒญ์ ๋ณด๋ด๊ธฐ ๋๋ฌธ์ ์ง์ฐ์ ๋๋๋๋ค. 250โ400ms ๋๋ฐ์ด์ค๋ฅผ ์ถ๊ฐํ๊ณ AbortController(๋๋ HTTP ํด๋ผ์ด์ธํธ ์ทจ์)๋ฅผ ์ฌ์ฉํด ์ด์ ์์ฒญ์ ์ทจ์ํ์ธ์.
๋ง์ง๋ง์ผ๋ก ๊ฐ ํ์ ์ฌ๋ ๋๋งํ๊ธฐ ์ ๋ ดํ๊ฒ ๋ง๋์ธ์. ๊ฐ๋ฅํ ๊ฒฝ์ฐ id์ ์์๊ฐ๋ง ์ ๋ฌํ๊ณ , ํ ์ถ๋ ฅ์ ๋ฉ๋ชจ์ด์ ์ด์ ์ผ๋ก ์ฒ๋ฆฌํ๋ฉฐ, ๋ก๋ฉ์ ์ ์ฒด ํ๋ฉด ์ค๋ฒ๋ ์ด ๋์ ํ ์ด๋ธ ๋ณธ๋ฌธ ๋ด๋ถ์์ ์ฒ๋ฆฌํด ํ์ด์ง ๋ฐ์์ฑ์ ์ ์งํ์ธ์.
์์ฃผ ํ๋ ์ค์๋ค
ํ๋ค์ ๋ช ๊ฐ์ง ์์ ์ ์ ์ฉํ๊ณ ์์ ์ด๋์ ๋ณธ ๋ค ๋ฉ์ถฐ๋ฒ๋ฆฌ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ๊ทธ ์ด์ ๋ ๋น์ผ ๋ถ๋ถ์ด "๋ชฉ๋ก ์์ฒด"๊ฐ ์๋๋ผ ๊ฐ ํ์ด ๋ ๋๋๊ฑฐ๋ ์ ๋ฐ์ดํธ๋๊ฑฐ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๋์ ์ํํ๋ ๋ชจ๋ ์์ ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค.
๊ฐ์ํ๋ ๋์์ด ๋์ง๋ง ์ฝ๊ฒ ๋ฌด๋ ฅํ๋ ์ ์์ต๋๋ค. ๋ณด์ด๋ ๊ฐ ํ์ด ๋ฌด๊ฑฐ์ด ์ฐจํธ, ์ด๋ฏธ์ง ๋์ฝ๋ฉ, ๊ณผ๋ํ ์์ฒ ๋๋ ๋น์ผ ํฌ๋งทํ ์ ์ํํ๋ฉด ์คํฌ๋กค์ด ์ฌ์ ํ ๊ฑฐ์น ๊ฒ ๋๊ปด์ง๋๋ค. ๊ฐ์ํ๋ ์กด์ฌํ๋ ํ ์๋ฅผ ์ ํํ ๋ฟ, ๊ฐ ํ์ ๋ฌด๊ฒ๋ ์ ํํ์ง ์์ต๋๋ค.
ํค๋ ์กฐ์ฉํ ์ฑ๋ฅ ์ด์ธ์์ ๋๋ค. ๋ฐฐ์ด ์ธ๋ฑ์ค๋ฅผ ํค๋ก ์ฌ์ฉํ๋ฉด ํญ๋ชฉ์ ์ฝ์ /์ญ์ /์ ๋ ฌํ ๋ Vue๊ฐ ํ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ถ์ ํ ์ ์์ด ๋ฆฌ๋ง์ดํธ๊ฐ ๋ฐ์ํ๊ณ ์ ๋ ฅ ํฌ์ปค์ค๊ฐ ๋ฆฌ์ ๋ ์ ์์ต๋๋ค. ์์ ์ ์ธ id๋ฅผ ์ฌ์ฉํด DOM๊ณผ ์ปดํฌ๋ํธ ์ธ์คํด์ค๋ฅผ ์ฌ์ฌ์ฉํ์ธ์.
๋๋ฐ์ด์ค๋ ์ญํจ๊ณผ๋ฅผ ๋ผ ์ ์์ต๋๋ค. ์ง์ฐ์ด ๋๋ฌด ๊ธธ๋ฉด ์ฌ์ฉ์๋ ํ์ดํํ๊ณ ์๋ฌด ๋ฐ์์ด ์๋ค๊ฐ ๊ฒฐ๊ณผ๊ฐ ํ ๋ฒ์ ํ์ด ๋์ค๋ ๊ฑธ ๋ณด๊ณ UI๊ฐ ๊ณ ์ฅ๋ ์ค ์๋๋ค. ์งง์ ์ง์ฐ์ด ์ผ๋ฐ์ ์ผ๋ก ๋ ๋ซ๊ณ , ์ฑ์ด ์ ๋ ฅ์ ๋ฐ์์์ ์๋ฆฌ๋ "๊ฒ์ ์ค..." ๊ฐ์ ์ฆ๊ฐ์ ํผ๋๋ฐฑ์ ์ค ์ ์์ต๋๋ค.
๋๋ถ๋ถ์ ๋๋ฆฐ ๋ชฉ๋ก ๊ฐ์ฌ์์ ๋์ค๋ ๋ค์ฏ ๊ฐ์ง ์ค์:
- ๋ชฉ๋ก์ ๊ฐ์ํํ์ง๋ง ๊ฐ์ ํ๋ง๋ค ๋ฌด๊ฑฐ์ด ์ (์ด๋ฏธ์ง, ์ฐจํธ, ๋ณต์กํ ์ปดํฌ๋ํธ)์ ์ ์งํจ
- ์ ๋ ฌ ๋ฐ ์ ๋ฐ์ดํธ ์ ํ์ด ๋ฆฌ๋ง์ดํธ๋๊ฒ ๋ง๋๋ ์ธ๋ฑ์ค ๊ธฐ๋ฐ ํค ์ฌ์ฉ
- ๋๋ฌด ๊ธธ๊ฒ ์ค์ ํ ๋๋ฐ์ด์ค(๋ฐ์์ด ๋๋ฆฌ๋ค๊ณ ๋๊ปด์ง๊ฒ ํจ)
- ์ ์ฒด ํํฐ ๊ฐ์ฒด๋ฅผ ๊ฐ์ํ๊ฑฐ๋ URL ์ํ๋ฅผ ๊ณผ๋ํ๊ฒ ๋๊ธฐํํด ๊ด๋ฒ์ํ ๋ฐ์ ๋ณํ๋ฅผ ํธ๋ฆฌ๊ฑฐํจ
- ์คํฌ๋กค ์์น๋ฅผ ์ง์ฐ๊ณ ํฌ์ปค์ค๋ฅผ ๋บ๋ ์ ์ญ ํ์ด์ง ๋ก๋ ์ฌ์ฉ
Vue 3 ๊ด๋ฆฌ์ UI ์ฑ๋ฅ ์ฒดํฌ๋ฆฌ์คํธ๋ฅผ ์ฌ์ฉํ๋ค๋ฉด "๋ฌด์์ด ์ฌ๋ ๋๋๋๊ฐ"์ "๋ฌด์์ด ์ฌ์กฐํ๋๋๊ฐ"๋ฅผ ์ฐ์ ๋ฌธ์ ๋ก ๋์ธ์.
๋น ๋ฅธ ์ฑ๋ฅ ์ฒดํฌ๋ฆฌ์คํธ
ํ ์ด๋ธ์ด๋ ๋ชฉ๋ก์ด ๋์ ๊ฑฐ๋ฆฌ๊ธฐ ์์ํ๋ฉด ์ด ์ฒดํฌ๋ฆฌ์คํธ๋ฅผ ์ฌ์ฉํ์ธ์. ๋ชฉํ๋ ๋ถ๋๋ฌ์ด ์คํฌ๋กค, ์์ธก ๊ฐ๋ฅํ ๊ฒ์, ๊ทธ๋ฆฌ๊ณ ๋ถํ์ํ ์ฌ๋ ๋๋ง ๊ฐ์์ ๋๋ค.
๋ ๋๋ง๊ณผ ์คํฌ๋กค
๋๋ถ๋ถ์ "๋๋ฆฐ ๋ชฉ๋ก" ๋ฌธ์ ๋ ๋๋ฌด ๋ง์ด, ๋๋ฌด ์์ฃผ ๋ ๋๋ง๋๋ ๋ฐ์ ์ต๋๋ค.
- ํ๋ฉด์ ์๋ฐฑ ํ์ ํ์ํ ์ ์๋ค๋ฉด ๊ฐ์ํ๋ฅผ ์ฌ์ฉํด DOM์ด ํ๋ฉด์ ๋ณด์ด๋ ๊ฒ๋ง ํฌํจํ๋๋ก ํ์ธ์(์์ ๋ฒํผ ํฌํจ).
- ํ ๋์ด๋ฅผ ์์ ์ ์ผ๋ก ์ ์งํ์ธ์. ๊ฐ๋ณ ๋์ด๋ ๊ฐ์ํ๋ฅผ ๊นจ๊ณ ์์์ ์ ๋ฐํ ์ ์์ต๋๋ค.
- ์ธ๋ผ์ธ์ผ๋ก ์๋ก์ด ๊ฐ์ฒด๋ ๋ฐฐ์ด์ props๋ก ์ ๋ฌํ์ง ๋ง์ธ์(์:
:style="{...}"). ํ ๋ฒ ์์ฑํด ์ฌ์ฌ์ฉํ์ธ์. - ํ ๋ฐ์ดํฐ์ ๋ํ deep watcher๋ ์ฃผ์ํ์ธ์. ์ค์ ๋ก ๋ฐ๋๋ ๋ช๋ช ํ๋์ ๋ํ
computed๋ ๋์ํ watch๋ฅผ ์ ํธํ์ธ์. - ์ค์ ๋ ์ฝ๋ id์ ๋ง๋ ์์ ๋ ํค๋ฅผ ์ฌ์ฉํ๊ณ ๋ฐฐ์ด ์ธ๋ฑ์ค๋ ์ฌ์ฉํ์ง ๋ง์ธ์.
๊ฒ์, ๋ก๋ฉ ๋ฐ ์์ฒญ
๋คํธ์ํฌ๊ฐ ๋๋ฆด ๋๋ ๋ชฉ๋ก์ด ๋น ๋ฅด๊ฒ ๋๊ปด์ง๊ฒ ๋ง๋์ธ์.
- ๊ฒ์์ 250โ400ms ์ ๋ ๋๋ฐ์ด์คํ๊ณ ์ ๋ ฅ์ ํฌ์ปค์ค๋ฅผ ์ ์งํ๋ฉฐ ์ค๋๋ ์์ฒญ์ ์ทจ์ํด ๋ ์ค๋๋ ๊ฒฐ๊ณผ๊ฐ ์๋ก์ด ๊ฒ์ ๋ฎ์ง ๋ชปํ๊ฒ ํ์ธ์.
- ์ ๊ฒฐ๊ณผ๋ฅผ ๋ก๋ํ๋ ๋์ ๊ธฐ์กด ๊ฒฐ๊ณผ๋ฅผ ํ๋ฉด์ ์ ์งํ์ธ์. ํ ์ด๋ธ์ ์ง์ฐ๋ ๋์ ๋ฏธ๋ฌํ "์ ๋ฐ์ดํธ ์ค" ์ํ๋ฅผ ์ฌ์ฉํ์ธ์.
- ํ์ด์ง๋ค์ด์ ์ ์์ธก ๊ฐ๋ฅํ๊ฒ ์ ์งํ์ธ์(๊ณ ์ ํ์ด์ง ํฌ๊ธฐ, ๋ช ํํ ์ด์ /๋ค์, ๋๋ผ์ด ๋ฆฌ์ ์์).
- ๊ด๋ จ ํธ์ถ์ ๋ฐฐ์นํ๊ฑฐ๋ ๋ณ๋ ฌ๋ก ๊ฐ์ ธ์จ ๋ค ํ ๋ฒ์ ๋ ๋ํ์ธ์.
- ๋์ผํ ํํฐ ์ธํธ์ ๋ํด ๋ง์ง๋ง ์ฑ๊ณต ์๋ต์ ์บ์ํด ์์ฃผ ๋ณด๋ ๋ทฐ๋ก ๋์๊ฐ ๋ ์ฆ์ ๋๊ปด์ง๊ฒ ํ์ธ์.
์: ๋ถํ๊ฐ ๊ฑธ๋ฆฐ ํฐ์ผ ๊ด๋ฆฌ์ ํ๋ฉด
์ง์ํ์ด ํ๋ฃจ ์ข ์ผ ํฐ์ผ ํ๋ฉด์ ์ด์ด๋ก๋๋ค. ๊ณ ๊ฐ๋ช , ํ๊ทธ, ์ฃผ๋ฌธ ๋ฒํธ๋ก ๊ฒ์ํ๋ฉด์ ๋ผ์ด๋ธ ํผ๋๊ฐ ํฐ์ผ ์ํ(์ ๋ต๊ธ, ์ฐ์ ์์ ๋ณ๊ฒฝ, SLA ํ์ด๋จธ)๋ฅผ ๊ณ์ ์ ๋ฐ์ดํธํฉ๋๋ค. ํ ์ด๋ธ์ ์ฝ๊ฒ 10,000ํ์ ๋๋ฌํ ์ ์์ต๋๋ค.
์ด๊ธฐ ๋ฒ์ ์ ๋์ํ์ง๋ง ๋๋์ด ๋์ฐํฉ๋๋ค. ํ์ดํํ ๋ ๋ฌธ์๊ฐ ๋ฆ๊ฒ ๋ํ๋๊ณ , ํ ์ด๋ธ์ด ๋งจ ์๋ก ์ ํํ๋ฉฐ ์คํฌ๋กค ์์น๊ฐ ๋ฆฌ์ ๋ฉ๋๋ค. ์ฑ์ ๋งค ํค ์ ๋ ฅ๋ง๋ค ์์ฒญ์ ๋ณด๋ด๊ณ ๊ฒฐ๊ณผ๋ ์ด์ ๊ณผ ์ ๊ฐ ์ฌ์ด๋ฅผ ๊น๋นก์ด๋ฉฐ ๋ณด์ ๋๋ค.
๋ฌด์์ ๋ฐ๊ฟจ๋:
- ๊ฒ์ ์ ๋ ฅ์ 250โ400ms ๋๋ฐ์ด์ค๋ฅผ ์ ์ฉํด ์ฌ์ฉ์๊ฐ ๋ฉ์ถ ํ์๋ง ์ฟผ๋ฆฌํ๊ฒ ํจ
- ์ ์์ฒญ์ด ์ฒ๋ฆฌ๋๋ ๋์ ์ด์ ๊ฒฐ๊ณผ๋ฅผ ์ ์งํด ๊น๋นก์์ ๋ฉ์ถค
- ๋ณด์ด๋ ๊ฒ๋ง ๋ ๋๋งํ๋๋ก ํ์ ๊ฐ์ํํจ
- ๊ด๋ จ ์๋ ๋ผ์ด๋ธ ์ ๋ฐ์ดํธ์ ๋ํด ํ์ ๋ค์ ๋ ๋ํ์ง ์๋๋ก ํ์ ๋ฉ๋ชจ์ด์ ์ด์ ํจ
- ์๋ฐํ, ๋ฆฌ์น ์ค๋ํซ, ํดํ ๊ฐ์ ๋ฌด๊ฑฐ์ด ์ ์ฝํ ์ธ ๋ ํ์ด ๋ณด์ผ ๋ ์ง์ฐ ๋ก๋ํจ
๋๋ฐ์ด์ค ํ ํ์ดํ ์ง์ฐ์ด ์ฌ๋ผ์ง๊ณ ๋ถํ์ํ ์์ฒญ์ด ์ค์์ต๋๋ค. ์ด์ ๊ฒฐ๊ณผ ์ ์ง๋ก ๊น๋นก์์ด ๋ฉ์ถฐ ๋คํธ์ํฌ๊ฐ ๋๋ ค๋ ํ๋ฉด์ด ์์ ์ ์ผ๋ก ๋๊ปด์ก์ต๋๋ค.
๊ฐ์ํ๋ ๊ฐ์ฅ ํฐ ์๊ฐ์ ๊ฐ์ ์ ๊ฐ์ ธ์์ต๋๋ค: ๋ธ๋ผ์ฐ์ ๊ฐ ํ ๋ฒ์ ์์ฒ ํ์ ๊ด๋ฆฌํ์ง ์์ ์คํฌ๋กค์ด ๋ถ๋๋ฌ์์ก์ต๋๋ค. ํ ๋ฉ๋ชจ์ด์ ์ด์ ์ ๋จ์ผ ํฐ์ผ ๋ณ๊ฒฝ ์ "ํ ์ด๋ธ ์ ์ฒด" ์ ๋ฐ์ดํธ๋ฅผ ๋ง์์ต๋๋ค.
๋ผ์ด๋ธ ํผ๋์๋ ํ ๊ฐ์ง ์ถ๊ฐ ์กฐ์ ์ด ๋์์ด ๋์์ต๋๋ค: ์ ๋ฐ์ดํธ๋ฅผ ๋ช๋ฐฑ ๋ฐ๋ฆฌ์ด ๋จ์๋ก ๋ฐฐ์นํด UI๊ฐ ๊ณ์ ์ฌ๋ ์ด์์๋๋ ๊ฒ์ ๋ง์์ต๋๋ค.
๊ฒฐ๊ณผ: ์คํฌ๋กค์ด ์์ ๋๊ณ ํ์ดํ์ด ๋น ๋ฅด๋ฉฐ ๋๋ผ์์ด ์ค์์ต๋๋ค.
๋ค์ ๋จ๊ณ: ์ฑ๋ฅ์ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ๋ง๋์ธ์
๋น ๋ฅธ ๊ด๋ฆฌ์ UI๋ ๋์ค์ ๊ตฌํ๋ ๊ฒ๋ณด๋ค ์ ์งํ๊ธฐ๊ฐ ์ฝ์ต๋๋ค. ์ด ์ฒดํฌ๋ฆฌ์คํธ๋ฅผ ์ ํ๋ฉด๋ง๋ค ๊ธฐ์ค์ผ๋ก ์ผ์ผ์ธ์, ์ผํ์ฑ ์ ๋ฆฌ๋ก ๋๋ด์ง ๋ง์ธ์.
์ฌ์ฉ์๊ฐ ์ฒด๊ฐํ๋ ๋ฌธ์ ๋ฅผ ์ฐ์ ์์๋ก ๋์ธ์. ํฐ ๊ฐ์ ์ ๋ณดํต ๋ธ๋ผ์ฐ์ ๊ฐ ๊ทธ๋ ค์ผ ํ ๊ฒ์ ์ค์ด๊ณ ํ์ดํ์ ์ผ๋ง๋ ๋นจ๋ฆฌ ๋ฐ์ํ๋์ง๋ฅผ ๊ฐ์ ํ๋ ๊ฒ์์ ์ต๋๋ค.
๊ธฐ๋ณธ๋ถํฐ ์์ํ์ธ์: DOM ํฌ๊ธฐ ์ค์ด๊ธฐ(๊ธด ๋ชฉ๋ก ๊ฐ์ํ, ์จ๊น ํ ๋ ๋๋ง ๊ธ์ง), ์ ๋ ฅ ์ง์ฐ ์ค์ด๊ธฐ(๊ฒ์ ๋๋ฐ์ด์ค, ๋ฌด๊ฑฐ์ด ํํฐ๋ฅผ ํค ์ ๋ ฅ์์ ๋ถ๋ฆฌ), ๋ ๋๋ง ์์ ํ(ํ ์ปดํฌ๋ํธ ๋ฉ๋ชจ์ด์ ์ด์ , props ์์ ํ). ์ฌ์ํ ๋ฆฌํฉํฐ๋ ๋ง์ง๋ง์ ํ์ธ์.
๊ทธ ํ์ ๋ฆฌ๊ทธ๋ ์ ์ ๋ง๋ ๋ช ๊ฐ์ง ๊ฐ๋๋ ์ผ์ ์ถ๊ฐํ์ธ์. ์: 200ํ ์ด์ ๋ชฉ๋ก์ ๊ฐ์ํ, ๋ชจ๋ ๊ฒ์ ์ ๋ ฅ์ ๋๋ฐ์ด์ค, ๋ชจ๋ ํ์ ์์ ๋ id ํค ์ฌ์ฉ.
์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ๋น๋ฉ ๋ธ๋ก์ด ์์ผ๋ฉด ๋ ์ฝ์ต๋๋ค. ํฉ๋ฆฌ์ ๊ธฐ๋ณธ๊ฐ์ ๊ฐ์ง ๊ฐ์ ํ ์ด๋ธ ์ปดํฌ๋ํธ, ๋๋ฐ์ด์ค๊ฐ ๋ด์ฅ๋ ๊ฒ์ ๋ฐ, ํ ์ด๋ธ ๋ ์ด์์์ ๋ง์ถ ์ค์ผ๋ ํค/๋น ์ํ๋ ์ํค ํ์ด์ง๋ณด๋ค ๋ ํฐ ํจ๊ณผ๋ฅผ ๋ ๋๋ค.
์ค์ฉ์ ์ธ ์ต๊ด: ์ ๊ด๋ฆฌ์ ํ๋ฉด์ ๋จธ์งํ๊ธฐ ์ ์ ๋ฐ์ดํฐ 10๋ฐฐ, ๋๋ฆฐ ๋คํธ์ํฌ ํ๋ฆฌ์ ์ผ๋ก ํ ์คํธํ์ธ์. ๊ทธ ์ํ์์๋ ๋๋์ด ์ข์ผ๋ฉด ์ค์ฌ์ฉ์์๋ ํ๋ฅญํ ๊ฒ์ ๋๋ค.
๋ด๋ถ ๋๊ตฌ๋ฅผ ๋น ๋ฅด๊ฒ ๋ง๋ค๊ณ ์ด๋ฌํ ํจํด์ ํ๋ฉด ์ ๋ฐ์ ๊ฑธ์ณ ์ผ๊ด๋๊ฒ ์ ์งํ๊ณ ์ถ๋ค๋ฉด AppMaster (appmaster.io)๋ ์ข์ ์ ํ์ผ ์ ์์ต๋๋ค. ์ค์ Vue 3 ์น ์ฑ์ ์์ฑํ๋ฏ๋ก ๋ชฉ๋ก์ด ๋ฌด๊ฑฐ์์ง ๋ ๋์ผํ ํ๋กํ์ผ๋ง๊ณผ ์ต์ ํ ์ ๊ทผ๋ฒ์ ์ ์ฉํ์ธ์.
์์ฃผ ๋ฌป๋ ์ง๋ฌธ
๊ฐ์์ ์ผ๋ก ๊ฐ์ฅ ํฐ ๊ฐ์ ์ ๋ณดํต ๊ฐ์ํ์ ๋๋ค. ํ ๋ฒ์ ๋ช ๋ฐฑ ๊ฐ ์ด์์ ํ์ ๋ ๋ํ๋ฉด ๊ฐ์ํ๋ก ์คํฌ๋กค ์ค ๋ธ๋ผ์ฐ์ ๊ฐ ์์ฒ ๊ฐ์ DOM ๋ ธ๋๋ฅผ ๊ด๋ฆฌํ์ง ์๊ฒ ๋์ด ์ฒด๊ฐ ์ฑ๋ฅ์ด ๊ฐ์ฅ ํฌ๊ฒ ์ข์์ง๋๋ค.
์คํฌ๋กค ์ค ํ๋ ์ ๋๋์ด ์๋ค๋ฉด ๋ณดํต ๋ ๋๋ง/DOM ๊ด๋ จ ๋ฌธ์ ์ ๋๋ค. ๋ฐ๋๋ก UI๋ ๋ถ๋๋ฝ์ง๋ง ๊ฒฐ๊ณผ๊ฐ ๋ฆ๊ฒ ๋์ฐฉํ๋ฉด ๋คํธ์ํฌ๋ ์๋ฒ ์ธก ํํฐ๋ง ๋ฌธ์ ์ผ ๊ฐ๋ฅ์ฑ์ด ํฝ๋๋ค. ์บ์๋ ๋ฐ์ดํฐ๋ ๋น ๋ฅธ ๋ก์ปฌ ์๋ต์ผ๋ก ํ ์คํธํด๋ณด๋ฉด ๊ตฌ๋ถํ ์ ์์ต๋๋ค.
๊ฐ์ํ๋ ํ๋ฉด์ ๋ณด์ด๋ ํ(์์ ๋ฒํผ ํฌํจ)๋ง ๋ ๋๋งํ๊ณ ๋ฐ์ดํฐ์ ์ ๋ชจ๋ ํ์ DOM์ ๋ฃ์ง ์๋ ๋ฐฉ์์ ๋๋ค. DOM ํฌ๊ธฐ์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ ์ค์ด๊ณ ์คํฌ๋กค ์ค ๋ธ๋ผ์ฐ์ ์ Vue๊ฐ ์ฒ๋ฆฌํ ์์ ๋์ ํฌ๊ฒ ๋ฎ์ถฅ๋๋ค.
ํ ๋์ด๋ฅผ ์ผ์ ํ๊ฒ ์ ์งํ๊ณ , ๋ ๋ ํ ํฌ๊ธฐ๊ฐ ๋ฐ๋๋ ์ฝํ ์ธ (์ด๋ฏธ์ง ๋ก๋, ํ ์คํธ ์ค๋ฐ๊ฟ, ํ์ฅ ์น์ )๋ฅผ ํผํ์ธ์. ํฌ๊ธฐ๊ฐ ๋ณํ๋ฉด ์คํฌ๋กค๋ฌ๊ฐ ์ฌ์ธก์ ํด์ผ ํด์ ์ ํ๊ฐ ์๊น๋๋ค.
๊ด๋ฆฌ ๊ฒ์์๋ ๋ณดํต 250~400ms ์ ๋๊ฐ ์ข์ต๋๋ค. ๋๋ฌด ์งง์ผ๋ฉด ๋งค ํ์ดํ๋ง๋ค ์ฌํํฐ๋ง๊ณผ ์ฌ๋ ๋๋ง์ด ๋ฐ์ํ๊ณ , ๋๋ฌด ๊ธธ๋ฉด ๋ฐ์์ด ๋๊ธด๋ค๊ณ ๋๊ปด์ง๋๋ค.
์ด์ ์์ฒญ์ ์ทจ์ํ๊ฑฐ๋ ์ค๋๋ ์๋ต์ ๋ฌด์ํ์ธ์. ์๋ฅผ ๋ค์ด AbortController(fetch)๋ ํด๋ผ์ด์ธํธ์ ์ทจ์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ฑฐ๋ ์์ฒญ id๋ฅผ ์ถ์ ํด ์ต์ ์์ฒญ๋ง UI๋ฅผ ์
๋ฐ์ดํธํ๋๋ก ํ๋ฉด ๋ฉ๋๋ค.
ํ์ํ ๋ช ๊ฐ ํ๋๋ง props๋ก ์ ๋ฌํ๊ณ ํ
ํ๋ฆฟ์์ ์๋ก ์์ฑ๋๋ ํจ์๋ ๊ฐ์ฒด๋ฅผ ํผํ์ธ์. props์ ํธ๋ค๋ฌ์ ์๋ณ์๊ฐ ์์ ์ ์ด๋ฉด Vue๋ ์์ ์ปดํฌ๋ํธ๋ฅผ ๋ถํ์ํ๊ฒ ๋ค์ ๋ ๋๋งํ์ง ์์ต๋๋ค. ๋ณ๊ฒฝ์ด ์ ์ ๋ถ๋ถ์ v-memo๋ก ๋ฉ๋ชจ์ด์ ์ด์
ํ์ธ์.
๋ ๋ ๊ฒฝ๋ก์์ ๋น์ผ ์์
์ ๋นผ์ธ์. ํ์ํ(๋ ์ง, ํตํ ๋ฑ)๋ ํ ๋ฒ๋ง ๊ณ์ฐํด ์บ์ฑํ๊ฑฐ๋ ์๋ฒ์์ ๋ฏธ๋ฆฌ ํฌ๋งทํด์ ๋ด๋ ค์ฃผ๋ ๊ฒ ์ข์ต๋๋ค. ์๋ฅผ ๋ค์ด ์๋ฐฑ ๊ฐ ํ์์ ๋งค๋ฒ new Date()๋ฅผ ํธ์ถํ์ง ์๋๋ก ํ์ธ์.
์ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ ธ์ค๋ ๋์ ์ด์ ๊ฒฐ๊ณผ๋ฅผ ํ๋ฉด์ ์ ์งํ๊ณ ์์ "์ ๋ฐ์ดํธ ์ค" ํ์๋ง ๋ณด์ฌ์ฃผ์ธ์. ํ ์ด๋ธ์ ์ง์ฐ๋ ๋์ ์ด์ ๋ด์ฉ์ ์ ์งํ๋ฉด ๊น๋นก์์ ์ค์ด๊ณ ๋ ์ด์์ ๋ณํ๋ ์๋ฐฉ๋ฉ๋๋ค.
๋ค. AppMaster๋ ์ค์ Vue 3 ์น ์ฑ์ ์์ฑํ๋ฏ๋ก ๋์ผํ ๊ธฐ๋ฒ์ ์ ์ฉํ ์ ์์ต๋๋ค. ์ฌ๋ ๋๋ง ํ๋กํ์ผ๋ง, ๊ธด ๋ชฉ๋ก ๊ฐ์ํ, ๊ฒ์ ๋๋ฐ์ด์ค, ํ ๋ ๋๋ง ์์ ํ ๊ฐ์ ๋ฐฉ๋ฒ์ ๊ทธ๋๋ก ์ ํจํ๋ฉฐ, ์ด๋ฅผ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ๋น๋ฉ ๋ธ๋ก์ผ๋ก ํ์คํํ ์ ์๋ ์ฐจ์ด๊ฐ ์์ต๋๋ค.


