2022๋…„ 9์›” 28์ผยท4๋ถ„ ์ฝ๊ธฐ

Vue3 - ์•Œ๊ณ  ์‹ถ์€ ๋ชจ๋“  ๊ฒƒ

์ตœ์‹  ๋ฒ„์ „์˜ Vue์—๋Š” ์ฝ”๋”ฉ ๋ฐ ์œ ์ง€ ๊ด€๋ฆฌ๊ฐ€ ๋” ์‰ฌ์›Œ์ง„ ๋งŽ์€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค. Vue3์— ๋Œ€ํ•ด ์•Œ์•„์•ผ ํ•  ๋ชจ๋“  ๊ฒƒ์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

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 ์‚ฌ์šฉ์˜ ์žฅ์ 

์›น ์•ฑ์„ ๋„˜์–ด์„œ
ํ•˜๋‚˜์˜ ํ”„๋กœ์ ํŠธ๋กœ ์›น ์•ฑ๊ณผ ํ•จ๊ป˜ ๋„ค์ดํ‹ฐ๋ธŒ iOS ๋ฐ Android ์•ฑ์„ ๋ฐฐํฌํ•˜์„ธ์š”.
๋ชจ๋ฐ”์ผ ์ œ์ž‘

์˜ต์…˜ 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์—์„œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜

๋ฐ์ดํ„ฐ ๋ชจ๋ธ ๋งคํ•‘
์‹œ๊ฐ์  Data Designer๋กœ ์—”ํ‹ฐํ‹ฐ๋ฅผ ๊น”๋”ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์Šคํ‚ค๋งˆ๋กœ ๋ณ€ํ™˜ํ•˜์„ธ์š”.
๋ฐ์ดํ„ฐ ์„ค๊ณ„

์†Œํ”„ํŠธ์›จ์–ด์— ๋”ฐ๋ผ Vue 2๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋งค์šฐ ํฐ ํ”„๋กœ์ ํŠธ์—์„œ ์ž‘์—…ํ•˜๋Š” ๊ฒฝ์šฐ Vue3์œผ๋กœ ์ „ํ™˜ํ•˜๋Š” ๊ฒƒ์€ ๊ฐ€์น˜๊ฐ€ ์—†์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ตœ์ ํ™”๋ฅผ ์œ„ํ•œ ์ตœ์„ ์˜ ๋…ธ๋ ฅ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ํšจ์œจ์„ฑ ๋ฌธ์ œ๊ฐ€ ์ง€์†๋˜๋ฉด Vue3์„ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ Vue3๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ• ์ง€ ์—ฌ๋ถ€๋Š” ํฌ๊ธฐ์™€ ๋ณต์žก์„ฑ์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. Vue 2์˜ ๋Œ€๋ถ€๋ถ„์˜ ๊ตฌ๋ฌธ๊ณผ ๊ธฐ์ˆ ์€ Vue3์™€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ ์ค‘ ์ผ๋ถ€๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

AppMaster ํ”„๋กœ์ ํŠธ์˜ Vue.js

Vue3๋กœ ๋น ๋ฅด๊ฒŒ ๊ฐœ๋ฐœ
์‹œ๊ฐ์  ๋นŒ๋”์™€ ์‹ค์ œ ์ƒ์„ฑ ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด Vue3 ๊ธฐ๋ฐ˜ ์›น ์•ฑ UI๋ฅผ ์ œ์ž‘ํ•˜์„ธ์š”.
AppMaster ์ฒดํ—˜ํ•˜๊ธฐ

AppMaster ํ”Œ๋žซํผ์€ VueJS ํ”„๋ ˆ์ž„์›Œํฌ ๋˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ์˜ ์„ธ ๋ฒˆ์งธ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•œ ํ”„๋ŸฐํŠธ ์—”๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. Vue 3๋Š” ๊ด€๋ฆฌ์ž, ํŒจ๋„ ๋ฐ ํด๋ผ์ด์–ธํŠธ ํฌํ„ธ์„ ๋งŒ๋“œ๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋ฉฐ AppMaster ์ŠคํŠœ๋””์˜ค์˜ ์ „์ฒด ์ธํ„ฐํŽ˜์ด์Šค๋„ ์‹ค์ œ๋กœ VueJS ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋งŒ๋“ค์–ด์ง‘๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ๋งˆ์ดํฌ๋กœ ํ”„๋ก ํŠธ์—”๋“œ ๋˜๋Š” ํ”„๋ก ํŠธ์—”๋“œ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ผ๋Š” ํŠน๋ณ„ํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ์ œํ’ˆ์„ ๋น ๋ฅด๊ณ  ํšจ์œจ์ ์œผ๋กœ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๊ฐ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ ํŽธ์ง‘๊ธฐ ์™€ ๋น„์ฆˆ๋‹ˆ์Šค ํ”„๋กœ์„ธ์Šค ํŽธ์ง‘๊ธฐ ๋Š” ์šฐ๋ฆฌ ํ”Œ๋žซํผ์—์„œ ์™„์ „ํžˆ ๋ณ„๊ฐœ์˜ ํ”„๋ก ํŠธ์—”๋“œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๊ฐœ๋ฐœ ํŒ€์˜ ๊ด€์ ์—์„œ ๋งค์šฐ ๋น ๋ฅด๊ณ  ๋…๋ฆฝ์ ์œผ๋กœ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ œํ’ˆ์˜ ์ „์ฒด ์†๋„๊ฐ€ ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ชจ๋“  ์ด์ ์€ ๊ณ ๊ฐ์ด ๋‹น์‚ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์•ž์œผ๋กœ SPA ๋‹จ์ผ ํŽ˜์ด์ง€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๋ชจ๋“œ ์™ธ์—๋„ SSR(์„œ๋ฒ„ ์ธก ๋ Œ๋”๋ง) ๋ชจ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ๊ณ ๊ฐ์ด ๊ด€๋ฆฌ ํŒจ๋„ ๋ฐ ์‚ฌ์šฉ์ž ์ง€์ • ํฌํ„ธ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋†’์€ SEO ์ตœ์ ํ™”.

๋…ธ์ฝ”๋“œ์— ๋Œ€ํ•ด

์ฝ”๋”ฉ์˜ ๋ฏผ์ฃผํ™”์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ํ•ต์‹ฌ ์š”์†Œ ์ค‘ ํ•˜๋‚˜๋Š” ์ฝ”๋“œ ์—†๋Š” ๊ฐœ๋ฐœ ์ ‘๊ทผ ๋ฐฉ์‹ ์ž…๋‹ˆ๋‹ค. ์š”์ฆ˜์—๋Š” ๋” ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์ฝ”๋”ฉ ์—†์ด ์ผ๋ฐ˜์ ์œผ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์›น ๋””์ž์ธ, ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ , ๋ฐ˜์‘ํ˜• ์›น ๊ฐœ๋ฐœ์„ ๋” ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

AppMaster๋Š” ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ์–ธ์ œ๋“ ์ง€ ์ฝ”๋“œ๋ฅผ ๋ณด๊ณ  ๊ฒ€์‚ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. AppMaster๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ปดํ“จํ„ฐ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ์ ํŠธ ์ •๋ณด๋ฅผ ์‚ฌ์šฉ์ž ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์‚ฌ๋žŒ๋“ค์ด ์›ํ•˜๋Š” ๊ฒฝ์šฐ ์ฝ”๋“œ๋ฅผ ๋‚ด๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๊ท€ํ•˜๊ฐ€ AppMaster๋กœ ์ž‘์—… ์ค‘์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋Œ€ํ•œ ์™„์ „ํ•œ ์ œ์–ด ๋ฐ ์†Œ์œ ๊ถŒ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Œ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

๊ฒฐ๋ก 

์ฝ”๋“œ ์Šค๋‹ˆํŽซ๊ณผ ํ•จ๊ป˜ Vue3๊ฐ€ Vue 2์™€ ์–ด๋–ป๊ฒŒ ๋‹ค๋ฅธ์ง€์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์„ค๋ช…์ด ํ•„์š”ํ•˜๋ฉด ๊ณต์‹ Vue.js ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”. ์šฐ๋ฆฌ๋Š” ๋‹น์‹ ์ด ์•Œ์•„์•ผ ํ•  ๋Œ€๋ถ€๋ถ„์˜ ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์–ธ๊ธ‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ ๊ด€์‹ฌ์ด ์žˆ๋‹ค๋ฉด Vue3์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๋ฅผ ๊ณ„์† ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์‰ฌ์šด ์‹œ์ž‘
๋ฉ‹์ง„๋งŒ๋“ค๊ธฐ

๋ฌด๋ฃŒ ์š”๊ธˆ์ œ๋กœ AppMaster๋ฅผ ์‚ฌ์šฉํ•ด ๋ณด์„ธ์š”.
์ค€๋น„๊ฐ€ ๋˜๋ฉด ์ ์ ˆํ•œ ๊ตฌ๋…์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹œ์ž‘ํ•˜๋‹ค
Vue3 - ์•Œ๊ณ  ์‹ถ์€ ๋ชจ๋“  ๊ฒƒ | AppMaster