๋ฐ์ดํฐ ํ๋ฆ ์ ์ด์ ๋ฐ์์ฑ ๊ฒฝ๊ณ ์ค๊ณ๋ฅผ ํตํ ๋๊ท๋ชจ Vue ์ ํ๋ฆฌ์ผ์ด์ ํ์ฅ์ฑ ํ๋ณด
30 Vue Nuggets from Production Experience ๐
AI ์์ฝ
Context
๋จ์ ๊ธฐ๋ฅ ๊ตฌํ ์ค์ฌ์ ๊ฐ๋ฐ ๋ฐฉ์์ผ๋ก ์ธํด ๋๊ท๋ชจ Fintech ํ๋ก์ ํธ์์ State ๊ด๋ฆฌ์ ๋ณต์ก์ฑ ๋ฐ ๋ ๋๋ง ์ฑ๋ฅ ์ ํ ๋ฐ์. ๋ฐ์์ฑ ์์คํ ์ ๋ํ ์คํด์ ๋์จํ ์ปดํฌ๋ํธ ๊ฒฝ๊ณ ์ค์ ์ผ๋ก ์ธํ ์ ์ง๋ณด์ ๋น์ฉ ์ฆ๊ฐ ๋ฐ ๋๊ธฐํ ๋ฒ๊ทธ ์ง๋ฉด.
Technical Solution
- Reactivity ์ต์ ํ๋ฅผ ์ํด ๋จ์ผ ๊ฐ์ ref, ๊ตฌ์กฐํ๋ ๊ฐ์ฒด๋ reactive๋ก ๋ถ๋ฆฌํ์ฌ Proxy ์ถ์ ์ค๋ฒํค๋ ์ต์ํ
- Computed๋ฅผ ํตํ ํ์ ์ํ(Derived State) ์บ์ฑ์ผ๋ก ๋ถํ์ํ ๋ฆฌ๋ ๋๋ง ๋ฐฉ์ง ๋ฐ Watcher์ ๋ถ์ ํจ๊ณผ(Side Effects) ์ ํ
- Props Read-only ์์น ์ค์ ๋ฐ Event-driven ํต์ ์ค๊ณ๋ฅผ ํตํ ๋จ๋ฐฉํฅ ๋ฐ์ดํฐ ํ๋ฆ(One-way Data Flow) ๊ฐ์
- Pinia ๊ธ๋ก๋ฒ ์ํ์ Local UI ์ํ์ ์๊ฒฉํ ๋ถ๋ฆฌ๋ก State Ownership ๋ช ํํ ๋ฐ ๋๊ธฐํ ๋ฒ๊ทธ ์ ๊ฑฐ
- Composable์ ํตํ ๋น์ฆ๋์ค ๋ก์ง ์บก์ํ ๋ฐ ์์กด์ฑ ์ต์ํ๋ฅผ ํตํ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ๋๊ตฌ ์ค์ฌ ์ค๊ณ
- Dynamic Components ๋ฐ Slots ํ์ฉ์ผ๋ก ํ ํ๋ฆฟ ๋ด ๋ณต์กํ ์กฐ๊ฑด๋ถ ๋ ๋๋ง ๋ก์ง์ ์ ์ธ์ ๊ตฌ์กฐ๋ก ์ ํ
์ค์ฒ ํฌ์ธํธ
1. Props ๊ฐ์๊ฐ 7-10๊ฐ๋ฅผ ์ด๊ณผํ๋์ง ํ์ธํ์ฌ ์ปดํฌ๋ํธ ์ฑ ์ ๋ถ๋ฆฌ ๊ฒํ
2. Watcher๊ฐ ๋จ์ํ ๋ค๋ฅธ ๋ฐ์์ฑ ๊ฐ์ ์ ๋ฐ์ดํธํ๋์ง ํ์ธ ํ Computed๋ก ์ ํ ๊ฐ๋ฅ์ฑ ์ฒดํฌ
3. UI ์ํ(๋ชจ๋ฌ, ํญ)๊ฐ Pinia์ ํฌํจ๋์ด ๋ถํ์ํ ์ ์ญ ์ํ ์ค์ผ์ด ๋ฐ์ํ๋์ง ์ ๊ฒ
4. v-for ์ฌ์ฉ ์ index ๋์ ๊ณ ์ ID๋ฅผ key๋ก ์ค์ ํ์ฌ DOM ์ฌ์ฌ์ฉ ์ค๋ฅ ๋ฐฉ์ง
5. Composable ๋ด๋ถ์์ ํน์ ํ์ด์ง๋ ๋ ์ด์์์ ์์กดํ๋ ๋ก์ง์ด ํฌํจ๋์๋์ง ๊ฒํ