Vue3 - ์๊ณ ์ถ์ ๋ชจ๋ ๊ฒ
์ต์ ๋ฒ์ ์ Vue์๋ ์ฝ๋ฉ ๋ฐ ์ ์ง ๊ด๋ฆฌ๊ฐ ๋ ์ฌ์์ง ๋ง์ ๋ณ๊ฒฝ ์ฌํญ์ด ์์ต๋๋ค. Vue3์ ๋ํด ์์์ผ ํ ๋ชจ๋ ๊ฒ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.

์๋ฐ์คํฌ๋ฆฝํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ํ๋ ์์ํฌ์ ์ด๋ฅด๊ธฐ๊น์ง Vue์ ์ฌ์ ์ ์ธ์์ ์ ๋๋ค. ํนํ ๊ฒฝ๋์ฑ์ ์ ์งํ๋ ๋ฐฉ๋ฒ์ ๊ณ ๋ คํ ๋ ํนํ ๊ทธ๋ ์ต๋๋ค. Vue3์์ ์ ๊ณตํ๋ ๋ช ๊ฐ์ง ๊ธฐ๋ฅ์ Vite์์ ์๋ํ๋ ๋น๋ ๋๊ตฌ ๋ชจ์๋ฟ๋ง ์๋๋ผ ๋ ์ฌ์ด ์ํ ๊ด๋ฆฌ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ๋ Pinia๋ฅผ ํฌํจํฉ๋๋ค. ์ฑ์ Vue3๋ก ์ ๋ฐ์ดํธํ๊ณ ์ถ๊ฑฐ๋ ๋จ์ํ ํ๋ ์์ํฌ๋ฅผ ์คํํ๊ณ ์ถ๊ฑฐ๋ ์๊ด์์ด Vue3์ ๋ํด ์์์ผ ํ ๋ชจ๋ ๊ฒ์ ์ฌ๊ธฐ์ ์ ๋ฆฌํ์ต๋๋ค!
Vue3๋ ๋ฌด์์ ๋๊น?
Vue3์์ ๋ณผ ์ ์๋ ๋ณ๊ฒฝ ์ฌํญ์ ์ดํด๋ณด๊ธฐ ์ ์ ๋จผ์ Vue.js์ ํต์ฌ ๊ตฌ์ฑ ์์๊ฐ ๋ฌด์์ธ์ง ์ดํด๋ณด๊ฒ ์ต๋๋ค.
๋ทฐ
Vue.js๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๋ง๋๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ์คํ ์์ค ํ๋ฐํธ ์๋ JavaScript ํ๋ ์์ํฌ ์ ๋๋ค. ํ๋ ์์ํฌ๋ ์ฌ์ฉ์ ๋์คํ๋ ์ด์ ์ ์ํ ๊ฐ๋ฐ์ ์ง์ํ๋ ์ ์ธ์ ๋ฐ ๊ตฌ์ฑ ์์ ๊ธฐ๋ฐ ์ฝ๋ฉ ์ ๊ทผ ๋ฐฉ์์ ์ ๊ณตํฉ๋๋ค. ๊ธฐ๋ณธ ๋๋ ๋ณต์กํ ์ธํฐํ์ด์ค๋ฅผ ๊ฐ๋ฐํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ ์ ๊ณ ํ์ค HTML, CSS ๋ฐ JavaScript๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ถ๋์์ต๋๋ค. Vue.js์ ์ธ๊ธฐ์ Vue.js์ ๋๊ท๋ชจ ์ฌ์ฉ์ ๊ธฐ๋ฐ์ ์ด์ ๋ ํ๋ก๊ทธ๋๋จธ ์นํ์ ์ธ ๊ตฌ๋ฌธ, ์ฌ์ฉ ์ฉ์ด์ฑ ๋ฐ ์ ์ ์๋ ๋ฌธ์ ๋๋ฌธ์ ๋๋ค.

์์์ ์ธ๊ธํ๋ฏ์ด Vue.js๋ ๋ ๊ฐ์ง ํต์ฌ ํน์ฑ์ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค.
์ ์ธ์ ๋ ๋๋ง ์ ์ฌ์ฉํ๋ฉด JavaScript ์ํ์ ๋ฐ๋ผ HTML ์ถ๋ ฅ์ ์ ์ธ์ ์ผ๋ก ์ ์ํ ์ ์์ต๋๋ค. Vue.js๋ ํ ํ๋ฆฟ ๊ตฌ๋ฌธ์ ์ฌ์ฉํ์ฌ ์ผ๋ฐ HTML์ ํ์ฅํฉ๋๋ค.
๋ฐ์์ฑ - Vue.js๋ JavaScript ์ํ๋ฅผ ์ ๊ทน์ ์ผ๋ก ๋ชจ๋ํฐ๋งํ๊ณ ์์ ๋๋ฉด DOM์ ๋น ๋ฅด๊ฒ ์๋ก ๊ณ ์นฉ๋๋ค.
๋ทฐ3.0
Vue 2๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๋ฉํ๋ ์์ง๋์ด๋ ์ด์ Vue3์ผ๋ก ์ ๋ฐ์ดํธํด์ผ ํฉ๋๋ค. ์ฝ๊ธฐ ์ฝ๊ณ ์ผ๊ด๋ ๊ตฌ์ฑ ์์๋ฅผ ํจ์ฌ ๋ ์ฝ๊ณ ๋ ๋์ ๋ฐฉ๋ฒ์ผ๋ก ์์ฉ ํ๋ก๊ทธ๋จ์ ๊ตฌ์ฑํ ์ ์๋๋ก ํ๋ ์๋ก์ด ๊ธฐ๋ฅ์ด ํฌํจ๋์ด ์๊ธฐ ๋๋ฌธ์ ๋๋ค. Vue3๋ ์ฌ์ฉ์ ์นํ์ ์ด๋ฉฐ ๋ ์งง๊ณ ์ ์ง ๊ด๋ฆฌ๊ฐ ๊ฐ๋จํฉ๋๋ค. Vue3์ ์ฃผ๋ชฉํ ๋งํ ๊ธฐ๋ฅ ์ค ์ผ๋ถ๋ ํ ๋ ํฌํธ, ํ๋๊ทธ๋จผํธ ๋ฐ ๋ค์ค v-๋ชจ๋ธ์ ๋๋ค.
์ต์ ๋ฒ์ ์ ํํฐ๋ฅผ ์์ ๊ณ ์ํ ๊ธฐ๋ฐ CSS ๋ณ์์ ์คํ์ ์์คํ์ค ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ๋ํ ์๋ช ์ฃผ๊ธฐ ๋ช ๋ช ์์ ๋ฐ ๋จ์ผ ํ์ผ ๊ตฌ์ฑ ์์ ๋ณ๊ฒฝ์ด ์์ต๋๋ค.
Vue3๊ฐ ์ถ์๋์๋์?
์ฌ์ฉ ๊ฐ๋ฅํ ์ต์ ๋ฒ์ ์ Vue - Vue3๋ 2018๋ ์ค๋ฐ์ ์ฒ์ ๋ฐํ๋์์ผ๋ฉฐ 2020๋ 9์์ ๊ณต์ ์ถ์๋์์ต๋๋ค. Vue3.0์ 2022๋ 2์ 7์ผ์ ํ๋ก๊ทธ๋ ์๋ธ ์๋ฐ์คํฌ๋ฆฝํธ ํ๋ ์์ํฌ์ ๊ณต์ ๊ธฐ๋ณธ ๋ฒ์ ์ผ๋ก ์ ์ธ๋์์ต๋๋ค.
Vue3์ ์๋ก์ด ๊ธฐ๋ฅ์ ๋ฌด์์ ๋๊น?
Vue3์์ ๊ฐ์ฅ ๊ธฐ๋๋๋ ๋ณ๊ฒฝ ์ฌํญ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ ๊ณต/์ฃผ์ฌ
Vue 2์์๋ ์ฌ์ฉ์๊ฐ ์ฝ๋์ props๋ฅผ ํตํด ๋ฌธ์์ด, ๋ฐฐ์ด, ๊ฐ์ฒด ๋ฑ๊ณผ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ ์ ์์ต๋๋ค. ์ด๋ฌํ ๋ฐ์ดํฐ๋ ์์ ์์์์ ํ์ ์์๋ก ์ฝ๊ฒ ์ ๋ฌํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ props๋ฅผ ์ฌ์ฉํ๋ฉด ์์ ์์์์ ๊น์ด ์ค์ฒฉ๋ ํ์ ์์๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๋ ๊ฒ์ด ๋ ์ด๋ ค์์ก์ต๋๋ค. ๊ทธ ๊ฒฐ๊ณผ ๊ฐ๋ฐ์๋ค์ Vuex Store์ Event Hub๋ฅผ ์ฌ์ฉํด์ผ ํ์ต๋๋ค. Vue 2.2.0์๋ ์ ๊ณต/์ฃผ์ ๋ ํฌํจ๋์ด ์์ง๋ง ์ผ๋ฐ ํ๋ก๊ทธ๋จ ์ฝ๋์์๋ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ด ์ข์ต๋๋ค.
ํ์ง๋ง Vue3์์ ๊ฐ์ ๋ ์ ๊ณต/์ฃผ์ ์ฝค๋ณด๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐ์ดํฐ๋ฅผ ๋ ๋น ๋ฅด๊ณ ๊น๋ํ๊ฒ ์ ๋ฌํ ์ ์์ต๋๋ค. ์ด๋ฆ์์ ์ ์ ์๋ฏ์ด ์ฐ๋ฆฌ๋ ํ์ ์์๊ฐ ์ผ๋ง๋ ๊น์ด ์ค์ฒฉ๋์ด ์๋์ง์ ๊ด๊ณ์์ด ์์ ์์์์ ํด๋น ํ์ ๊ตฌ์ฑ ์์๋ก ๋ฐ์ดํฐ์ ์ก์ธ์คํ ์ ์๋๋ก ์ ๊ณตํ๋ ๋ฐ ์ฌ์ฉํฉ๋๋ค. ์ฌ๊ธฐ์์ ์ ๊ณต์ ๊ฐ์ฒด ๋๋ ํจ์๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
ํ ๋ ํฌํธ
๋น๋ํ๋ ค๋ ์ฑ์ ๋ ผ๋ฆฌ์ ๋ฐ๋ผ ๊ตฌ์ฑ ์์๊ฐ ํ์ํ๋ ค๋ ์์น์ ๋ค๋ฅธ ์์น์ ํ์๋ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์ ์ฒด ํ๋ฉด์ ํ์ํ๊ณ ์ฐจ์งํ๋ ํ์ ์ ๋ง๋ค ์ ์์ต๋๋ค. ์ด๋ฅผ ๊ทน๋ณตํ๊ธฐ ์ํด CSS์์ ์ด๋ฌํ ๊ตฌ์ฑ ์์์ position ์์ฑ์ ์ฌ์ฉํ ์ ์์ง๋ง Vue3์์๋ ๊ฐ๋ฐ์๊ฐ Teleport๋ฅผ ์ฌ์ฉํ ์๋ ์์ต๋๋ค.
ํ ๋ ํฌํธ๋ฅผ ์ฌ์ฉํ๋ฉด ํ๋ก๊ทธ๋๋จธ๋ ์ด๊ธฐ ์ปจํ ์ด๋์์ ์์๊ฐ ๋ํ๋์ด ์ฌ์ฉ ์ค์ธ ํ์ด์ง์ ๊ธฐ์กด ๊ตฌ์ฑ ์์๋ก ์์๋ฅผ ์ด๋ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด #app div์ ํค๋ ์์๋ฅผ ํค๋๋ก ์ฌ๋ฐฐ์นํ ์ ์์ต๋๋ค. Teleport๋ฅผ ์ฌ์ฉํ์ฌ Vue DOM ์ธ๋ถ์ ์๋ ์ฝ๋ ๊ตฌ์ฑ ์์๋ก ์์๋ฅผ ์ด๋ํ ์๋ง ์๋ค๋ ์ ์ ๊ธฐ์ตํ์ญ์์ค.
ํํธ
Vue 2์์ ํ์ผ ํ ํ๋ฆฟ์ ์ฌ๋ฌ ๋ฃจํธ ๊ตฌ์ฑ ์์๋ฅผ ๊ฐ๋ ๊ฒ์ ์ด๋ ต์ต๋๋ค. ํ๋ก๊ทธ๋๋จธ๋ ๋์ผํ ์๋ฃจ์ ์ผ๋ก ์์ ๊ตฌ์ฑ ์์์ ๋ชจ๋ ๊ตฌ์ฑ ์์๋ฅผ ๋๋ฌ์ธ๊ธฐ ์์ํ์ต๋๋ค. ๋๋ก๋ ํ๋ก๊ทธ๋๋จธ๊ฐ ์์๋ฅผ ๊ฐ์ธ๋ ์ปจํ ์ด๋ ์์ด ์์๋ฅผ ๋ ๋๋งํด์ผ ํ ์๋ ์์ต๋๋ค. ์ด์ ์์ง๋์ด๋ Vue3์ ์ถ๊ฐ๋ ๊ธฐ๋ฅ์ธ Fragments ๋๋ถ์ ๋ฃจํธ ํ ํ๋ฆฟ ํ์ผ์ ์๋ง์ ํญ๋ชฉ์ ๊ฐ์ง ์ ์์ต๋๋ค.
๊ธ๋ก๋ฒ ๋ทฐ API
Vue ์ฑ์ main.js ํ์ผ์์ Vue.component ๋๋ Vue.use๋ฅผ ์์ฃผ ์ฐพ์์ ๊ฒ์ ๋๋ค. ์ด๋ฅผ ์ ์ญ API ๋ผ๊ณ ํ๋ฉฐ Vue 2์๋ ์ด๋ฌํ ๋ฉ์๋๊ฐ ๋ง์ด ์์ต๋๋ค. ์ฑ์ ์ธ์คํด์ค๊ฐ ์ฌ๋ฌ ๊ฐ ์๋ ๊ฒฝ์ฐ ๋ชจ๋ ์ธ์คํด์ค๊ฐ Vue ์์ ๋ฐฐ์น๋ฉ๋๋ค. ํน์ ๊ธฐ๋ฅ์ ๋จ์ผ ์ ํ๋ฆฌ์ผ์ด์ ์ธ์คํด์ค๋ก ์ ํํ๋ ๊ฒ์ ์ด๋ ต์ต๋๋ค.
Vue3๋ createApp์ด๋ผ๋ ์๋ก์ด ๊ธ๋ก๋ฒ API๋ฅผ ๋์ ํ์ฌ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค. ์ด ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ฉด Vue ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋ก์ด ์ธ์คํด์ค๋ฅผ ์ป์ ์ ์์ต๋๋ค. ๋ชจ๋ Vue 2.x ๊ด๋ จ API๋ ๋ณ๋์ ์ฑ ์ธ์คํด์ค๋ก ์ ์ก๋ฉ๋๋ค. ์ด๋ฅผ ํตํด ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ชจ๋ ์ธ์คํด์ค๋ ์ด๋ฏธ ์ฌ์ฉ ์ค์ธ ๋ค๋ฅธ ์ธ์คํด์ค๋ฅผ ๋ฐฉํดํ์ง ์๊ณ ํด๋น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ ์ ์ ์ธ ๊ธฐ๋ฅ์ ๊ฐ์ง ์ ์์ต๋๋ค.
์ด๋ฒคํธ API
Vuex Store๋ฅผ ์ฌ์ฉํ๋ ๊ฒ ์ธ์๋ Event Bus์ ์ฌ์ฉ์ ํ๋ก๊ทธ๋๋จธ๊ฐ ๋ถ๋ชจ-์์ ์ปจํ ์คํธ๋ฅผ ๊ณต์ ํ์ง ์๋ ์์ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ ๋ฐ ์ฌ์ฉํ๋ ๊ฐ์ฅ ์ธ๊ธฐ ์๋ ๋ฐฉ๋ฒ ์ค ํ๋์ ๋๋ค. ๊ทธ๋ฌ๋ $on, $off , $once์ ๊ฐ์ ์ฝ๋๋ Vue3์์ ๋ชจ๋ ์ญ์ ๋์์ต๋๋ค. ๊ทธ๋ฌ๋ ์์ ์์๋ ๋ถ๋ชจ ์์์ ์ด๋ฒคํธ๋ฅผ ๋ด๋ณด๋ด์ผ ํ๋ฏ๋ก $emit์ ๊ณ์ ์ก์ธ์คํ ์ ์์ต๋๋ค. ์ด์ ๋ํ ํด๊ฒฐ์ฑ ์ ์ ๊ณต/์ฃผ์ ์ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค.
Vite ๊ธฐ๋ฐ ๋น๋ ๋๊ตฌ ๋ชจ์
Vue์ ์ ์์์ธ Evan You๊ฐ ๋์์ธํ Vite๋ ๊ฐ๋ณ๊ณ ๋น ๋ฅด๊ฒ ์์ฑํ ์ ์๋ ์ต๊ณ ์์ค์ Vue SFC ์ง์ ๋๊ตฌ ๋ชจ์์ ๋๋ค. Vite๋ ์ด์ ํ์ค Vue3 ๋น๋ ๊ตฌ์ฑ์ ์์ง์ ๋๋ค. webpack ์์ ๊ตฌ์ถ๋ ๋ชจ๋ ๋ฒ๋ค๋ฌ @vue-cli/service ๋ ์คํ, ํซ ๋ฆฌ๋ก๋ ๋ฐ ์ปดํ์ผ ์ ์ ์ฒด Vue ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํํฉ๋๋ค. ๋ฐ๋ฉด Vite๋ ํ๋ก๊ทธ๋จ ์ฝ๋์์ ES ๊ฐ์ ธ์ค๊ธฐ ๊ตฌ๋ฌธ์ ๊ฐ์ ธ์ ๋ธ๋ผ์ฐ์ ๊ฐ HTTP ์์ฒญ์ ๋ณด๋ด๊ธฐ ์ ์ ๊ฐ ๊ฐ์ ธ์ค๊ธฐ๋ฅผ ๋ถ์ํ ์ ์๋๋ก ํฉ๋๋ค.

๋ณ๊ฒฝ์ ์ฃผ๋ก ์๋์ ์ด์ ๋ก ์ด๋ฃจ์ด์ง๋๋ค. ์๋ฒ๋ JavaScript ๊ตฌ์ฑ ์์์ ๋ํ ๊ธฐ๋ณธ ๋ธ๋ผ์ฐ์ ์ง์์ ์ฌ์ฉํ๊ณ ํจ์ฌ ๋น ๋ฅด๊ธฐ ๋๋ฌธ์ ์ฆ์ ์์๋ฉ๋๋ค.
๊ตฌ์ฑ API ๊ตฌ๋ฌธ
์ต์ API๋ ์์ ์ํ ๋ฐ ๋ ผ๋ฆฌ๋ฅผ ์์ฑํ๋ ๋ฐ ์ฌ์ฉ๋์์ต๋๋ค. Composition API๋ Vue3์์ ์ด๋ฅผ ๋์ฒดํ๊ธฐ ์ํด ์ถ์๋์์ต๋๋ค. ๊ฐ์ ธ์จ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ต์ ์ ์ ์ํ์ง ์๊ณ Vue ์์๋ฅผ ๋ง๋ค ์ ์๊ฒ ํด์ฃผ๋ API ๋ชจ์์ผ ๋ฟ์ ๋๋ค.
๊ตฌ์ฑ API์๋ ๋ค์ API๊ฐ ํฌํจ๋์ด ์์ต๋๋ค.
๋ฐ์์ฑ API - ์: ref() ๋ฐ react(). ์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ ์ํ, ๊ณ์ฐ ์ํ ๋ฐ ๊ฐ์์๋ฅผ ์ง์ ๋น๋ํ ์ ์์ต๋๋ค.
์๋ช ์ฃผ๊ธฐ ํํฌ - ์: onMounted() ๋ฐ onUnmounted(). ๋ผ์ดํ์ฌ์ดํด ํํฌ๋ฅผ ์ฌ์ฉํ์ฌ ์์ ๋ผ์ดํ์ฌ์ดํด์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
์ข ์์ฑ ์ฃผ์ - ์๋ฅผ ๋ค์ด, ์ ๊ณต() ๋ฐ ์ฃผ์ (). Reactivity API์ ํจ๊ป Vue์ ์์กด์ฑ ์ฃผ์ ์์คํ ์ ํ์ฉํ๋ ๊ฒ์ ์์กด์ฑ ์ฃผ์ ์ ํตํด ๊ฐ๋ฅํฉ๋๋ค.
๊ตฌ์ฑ API ์ฌ์ฉ์ ์ฅ์
์ต์ API์ ๋นํด ๊ตฌ์ฑ API๋ฅผ ์ฌ์ฉํ ๋์ ์ฃผ์ ์ด์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ๋ฐ์ ์ํ๋ฅผ ์์ฑํ๊ธฐ ์ํด Vue3์์ ์์๊ฐ ๋ ์ด์ ํ์ํ์ง ์์ต๋๋ค.
- ์๋ง์ ๋ฐ์ ์์ฑ์ ์ถ๊ฐํ ๋ Vue.js ์์์ ์ค์ ์ด ๋ถํ๋ ค์ง ์ ์์ต๋๋ค. ์ด ๋๋ฌธ์ ์ด๋ฌํ ๋ฐ์์ฑ ๋ณ์๋ฅผ ๋ณ๋์ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ๋ก ์ถ์ํํ๋ ๊ฒ์ด ์ ์ฉํ ์ ์์ต๋๋ค.
- Composition API์ ์ฃผ์ ์ด์ ์ Composable ๋ฉ์๋์ ํํ๋ก ๋ช ํํ๊ณ ํจ๊ณผ์ ์ธ ๋ ผ๋ฆฌ๋ฅผ ์ฌ์ฌ์ฉํ ์ ์๋ค๋ ๊ฒ์ ๋๋ค. ์ต์ API์์ ๋ก์ง์ ์ฌ์ฌ์ฉํ๋ ์ฃผ์ ๋ฐฉ๋ฒ์ธ ๋ฏน์ค์ธ์ ๋ชจ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค.
- ์์ ํ ํ์ ์ ์ถ๋ฅผ ์ฌ์ฉํ์ฌ Composition API์ ์ฝ๋๋ฅผ ์ ๋ ฅํ ์ ์์ต๋๋ค.
- ํฉ์ฑ API์์ ์์ฑํ๋ ํ๋ก๊ทธ๋จ์ด ๋ ํจ์จ์ ์ด๊ณ ๋ณ์ ์ด๋ฆ์ ๋ ์๊ฒ ๋ง๋ค ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ค๋ฒํค๋๊ฐ ์ค์ด๋ญ๋๋ค.
- Composition API๋ฅผ ์ฌ์ฉํ๋ฉด ํ๋ก๊ทธ๋จ ์ฝ๋๋ฅผ ๋ ์ ๊ณต์ ํ ์ ์์ต๋๋ค.
ํผ๋์
Pinia๋ Vue.js์ฉ ๊ฒฝ๋ ์ํ ๊ด๋ฆฌ ๋๊ตฌ์ ๋๋ค. ์ด๋ฅผ ํตํด ์์์ ํ์ด์ง ๊ฐ์ ์ํ๋ฅผ ๊ณต์ ํ ์ ์์ต๋๋ค. Vue3์ ์๋ก์ด ๋ฐ์์ฑ ๊ฐ๋ ์ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์ ์นํ์ ์ด๊ณ ์์ ํ ์ ํ์ ์ํ ๊ด๋ฆฌ ํ๋ ์์ํฌ๋ฅผ ๋ง๋ญ๋๋ค. ์ด๊ฒ์ ์ด์ Vue3์ ์๋ก์ด ํ์ค ์ํ ์ ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค.
Pinia๋ ์ฒ์์ Vuex์ ์ ์ฌ๋ ฅ์ ๋ํ ์ฐ๊ตฌ ์ญํ ์ ํ์ต๋๋ค. ์ค๋ซ๋์ Vuex๋ Vue์ ๋ํด ์ ์๋ ์ํ ๊ด๋ฆฌ ์์คํ ์ด์์ง๋ง Vue3์์๋ ๊ณต์ ๋ฌธ์์์ Pinia๊ฐ ์ํ ๊ด๋ฆฌ์ ๊ถ์ฅ๋๋ ์์คํ ์ ๋๋ค. ํ์ฌ Vuex๋ ์ ์ง ๊ด๋ฆฌ ๋ชจ๋์ ์์ต๋๋ค. ๊ณ์ ์๋ํ์ง๋ง ์๋ก์ด ๊ธฐ๋ฅ์ ์ถ๊ฐ๋์ง ์์ต๋๋ค. ์๋ก์ด ์ฑ์๋ Pinia๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ ํผ๋์์ธ๊ฐ?
Pinia๋ ๋งค์ฐ ๊ฐ๋ฒผ์ฐ๋ฉฐ ์ต๋ 1KB์ ๋ถ๊ณผํฉ๋๋ค. ๋ํ Vue.js ๊ฐ๋ฐ ๋๊ตฌ์ ํตํฉ๋์ด Vue 2 ๋ฐ Vue3์์ ์ฝ๋ฉ ๊ฒฝํ์ ๊ฐ์ ํฉ๋๋ค. Pinia๋ ๋ชจ๋ ๋ฐ์ดํฐ ์ ํ์ ์ถ๋ก ํ๋ฏ๋ก ์๋ฐ์คํฌ๋ฆฝํธ์์๋ ์์ ํ๊ณ ์ ํํ ์๋ ์์ฑ์ ์ ๊ณตํ ์ ์์ต๋๋ค. Pinia๋ ์ค๊ณ์ ๋ชจ๋์์ด๋ฉฐ ์ฌ์ฉ์ ์นํ์ ์ด๋ฉฐ ํ์ฅ ๊ฐ๋ฅํฉ๋๋ค. ์ ๋ฐ์ ์ผ๋ก Pinia๋ ๊ฐ๋ณ๊ณ ๋ณต์กํ์ง ์์ผ๋ฉฐ ์ง์ ์ ์ ๋๋ค. ์์๋ฅผ ๋ค๋ฃจ๋ ๊ฒ๊ณผ ๋งค์ฐ ์ ์ฌํ๋ฉฐ Vue3์์ ๋์ ํ๋ก๊ทธ๋๋ฐ์ ํ์ํ ๋ชจ๋ ๋๊ตฌ๋ฅผ ํฌํจํฉ๋๋ค.
Vue 2๊ฐ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ต๋๊น?
Vue 2์ ๋ง์ง๋ง ๋ง์ด๋ ์ ๋ฐ์ดํธ๋ 2022๋ 7์์ ๋ฆด๋ฆฌ์ค๋ Vue 2.7์ด์์ต๋๋ค. Vue 2๋ ํ์ฌ ์ ์ง ๊ด๋ฆฌ ๋ชจ๋์ ๋๋ค. ์ถ๊ฐ ๊ธฐ๋ฅ์ ์ ๊ณต๋์ง ์์ง๋ง 18๊ฐ์ ๋์ ์ฌ์ ํ ์ค์ํ ๋ฒ๊ทธ ์์ ๋ฐ ๋ณด์ ํจ์น๊ฐ ์ ๊ณต๋ฉ๋๋ค. 2023๋ ๋ง๊น์ง Vue 2๋ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ต๋๋ค.
Vue 2์์ ๋ง์ด๊ทธ๋ ์ด์
์ํํธ์จ์ด์ ๋ฐ๋ผ Vue 2๋ฅผ ์ฌ์ฉํ์ฌ ๋งค์ฐ ํฐ ํ๋ก์ ํธ์์ ์์ ํ๋ ๊ฒฝ์ฐ Vue3์ผ๋ก ์ ํํ๋ ๊ฒ์ ๊ฐ์น๊ฐ ์์ ์ ์์ต๋๋ค. ์ต์ ํ๋ฅผ ์ํ ์ต์ ์ ๋ ธ๋ ฅ์๋ ๋ถ๊ตฌํ๊ณ ํจ์จ์ฑ ๋ฌธ์ ๊ฐ ์ง์๋๋ฉด Vue3์ ์ฌ์ฉํ์ญ์์ค.
์ ํ๋ฆฌ์ผ์ด์ ์ Vue3๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ ์ง ์ฌ๋ถ๋ ํฌ๊ธฐ์ ๋ณต์ก์ฑ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค. Vue 2์ ๋๋ถ๋ถ์ ๊ตฌ๋ฌธ๊ณผ ๊ธฐ์ ์ Vue3์ ๋์ผํฉ๋๋ค. ๊ทธ๋ฌ๋ ์์์ ์ธ๊ธํ ๋ณ๊ฒฝ ์ฌํญ ์ค ์ผ๋ถ๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ๋ง์ด๊ทธ๋ ์ด์ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
AppMaster ํ๋ก์ ํธ์ Vue.js
AppMaster ํ๋ซํผ์ VueJS ํ๋ ์์ํฌ ๋๋ ํ๋ ์์ํฌ์ ์ธ ๋ฒ์งธ ๋ฒ์ ์ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์๋ฅผ ์ํ ํ๋ฐํธ ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ญ๋๋ค. Vue 3๋ ๊ด๋ฆฌ์, ํจ๋ ๋ฐ ํด๋ผ์ด์ธํธ ํฌํธ์ ๋ง๋๋ ๋ฐ ์ฌ์ฉ๋๋ฉฐ AppMaster ์คํ๋์ค์ ์ ์ฒด ์ธํฐํ์ด์ค๋ ์ค์ ๋ก VueJS ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ง๋ค์ด์ง๋๋ค.
์ฐ๋ฆฌ๋ ๋ง์ดํฌ๋ก ํ๋ก ํธ์๋ ๋๋ ํ๋ก ํธ์๋ ๋ง์ดํฌ๋ก์๋น์ค๋ผ๋ ํน๋ณํ ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ์ฌ ์ ํ์ ๋น ๋ฅด๊ณ ํจ์จ์ ์ผ๋ก ๊ฐ๋ฐํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๊ฐ ๋ฐ์ดํฐ ๋ชจ๋ธ ํธ์ง๊ธฐ ์ ๋น์ฆ๋์ค ํ๋ก์ธ์ค ํธ์ง๊ธฐ ๋ ์ฐ๋ฆฌ ํ๋ซํผ์์ ์์ ํ ๋ณ๊ฐ์ ํ๋ก ํธ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋๋ค. ์ด๋ฅผ ํตํด ๊ฐ๋ฐ ํ์ ๊ด์ ์์ ๋งค์ฐ ๋น ๋ฅด๊ณ ๋ ๋ฆฝ์ ์ผ๋ก ๊ฐ๋ฐํ ์ ์์ผ๋ฏ๋ก ์ ํ์ ์ ์ฒด ์๋๊ฐ ํฅ์๋ฉ๋๋ค. ์ด๋ฌํ ๋ชจ๋ ์ด์ ์ ๊ณ ๊ฐ์ด ๋น์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ฉํ์ฌ ์ป์ ์ ์๋ ๊ฒ์ ๋๋ค.
์์ผ๋ก SPA ๋จ์ผ ํ์ด์ง ์์ฉ ํ๋ก๊ทธ๋จ ๋ชจ๋ ์ธ์๋ SSR(์๋ฒ ์ธก ๋ ๋๋ง) ๋ชจ๋๋ฅผ ์ถ๊ฐํ์ฌ ๊ณ ๊ฐ์ด ๊ด๋ฆฌ ํจ๋ ๋ฐ ์ฌ์ฉ์ ์ง์ ํฌํธ๋ฟ๋ง ์๋๋ผ ๋์ SEO ์ต์ ํ.

๋ ธ์ฝ๋์ ๋ํด
์ฝ๋ฉ์ ๋ฏผ์ฃผํ์ ์ํฅ์ ๋ฏธ์น๋ ํต์ฌ ์์ ์ค ํ๋๋ ์ฝ๋ ์๋ ๊ฐ๋ฐ ์ ๊ทผ ๋ฐฉ์ ์ ๋๋ค. ์์ฆ์๋ ๋ ๋ง์ ์ฌ๋๋ค์ด ์ฝ๋ฉ ์์ด ์ผ๋ฐ์ ์ผ๋ก ํ๋ก๊ทธ๋๋ฐ์ ์ก์ธ์คํ ์ ์์ต๋๋ค. ์น ๋์์ธ, ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ , ๋ฐ์ํ ์น ๊ฐ๋ฐ์ ๋ ๊ฐ๋จํ๊ฒ ๋ง๋ญ๋๋ค.
AppMaster๋ ์์ค ์ฝ๋๋ฅผ ์๋์ผ๋ก ์์ฑํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ์์ฉ ํ๋ก๊ทธ๋จ ์ค ํ๋์ ๋๋ค. ์ธ์ ๋ ์ง ์ฝ๋๋ฅผ ๋ณด๊ณ ๊ฒ์ฌํ ์ ์์ต๋๋ค. AppMaster๋ฅผ ์ฌ์ฉํ๋ฉด ์ปดํจํฐ ์ธ์ด๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ก์ ํธ ์ ๋ณด๋ฅผ ์ฌ์ฉ์ ์ ์ํ ์ ์์ต๋๋ค. ๋ํ ์ฌ๋๋ค์ด ์ํ๋ ๊ฒฝ์ฐ ์ฝ๋๋ฅผ ๋ด๋ณด๋ผ ์ ์์ต๋๋ค. ์ด๋ ๊ทํ๊ฐ AppMaster๋ก ์์ ์ค์ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํ ์์ ํ ์ ์ด ๋ฐ ์์ ๊ถ์ ๊ฐ์ง๊ณ ์์์ ๋ณด์ฅํฉ๋๋ค.
๊ฒฐ๋ก
์ฝ๋ ์ค๋ํซ๊ณผ ํจ๊ป Vue3๊ฐ Vue 2์ ์ด๋ป๊ฒ ๋ค๋ฅธ์ง์ ๋ํ ์์ธํ ์ค๋ช ์ด ํ์ํ๋ฉด ๊ณต์ Vue.js ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์ธ์. ์ฐ๋ฆฌ๋ ๋น์ ์ด ์์์ผ ํ ๋๋ถ๋ถ์ ์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ์ ์ธ๊ธํ์ต๋๋ค. ์ด ํ๋ ์์ํฌ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๋ ๋ฐ ๊ด์ฌ์ด ์๋ค๋ฉด Vue3์ ๋ํ ์ ๋ฐ์ดํธ๋ฅผ ๊ณ์ ์๊ณ ์์ด์ผ ํฉ๋๋ค.


