๐Ÿ“† 23.02.10 - Vue 3..! ์ด์ „ ๋ฒ„์ „๊ณผ๋Š” ๋ฌด์—‡์ด ๋‹ฌ๋ผ์กŒ์„๊นŒ

๋ฒ„๋“คยท2023๋…„ 2์›” 10์ผ
0

โœจToday I Learn (TIL)

๋ชฉ๋ก ๋ณด๊ธฐ
25/58
post-thumbnail

Vue 3 ์˜ ๋„์ž…

๊ธฐ๋ณธ์ ์œผ๋กœ Vue ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ์œ ์ €๋“ค์€ Vue 2.x ๋‹จ๊ณ„๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์—ˆ๋‹ค. ๊ทธ๋ ‡์ง€๋งŒ 22๋…„ ์ƒ๋ฐ˜๊ธฐ๋ถ€ํ„ฐ Vue๋Š” ๊ณต์‹์ ์œผ๋กœ ๋ฒ„์ „ 3์„ ๋‚ด์„ธ์šฐ๊ธฐ ์‹œ์ž‘ํ•˜์˜€๋‹ค. ์—ฌ๊ธฐ์„œ Vue 2์™€ ๋‹ค๋ฅธ ์ ์ด ์—†๋‹ค๊ณ  ๋งํ•˜๊ธฐ๋„, ๋‹ฌ๋ผ์ง„ ๋ถ€๋ถ„์ด ๋งŽ์•„์กŒ๋‹ค ํ•˜๊ธฐ๋„ ์• ๋งคํ•œ ๊ฒƒ์ด ์ด Vue 3์ธ ๊ฒƒ ๊ฐ™๋‹ค.

๊ธฐ์กด์— ์ƒ์šฉ๋˜์—ˆ๋˜ Vue 2์™€ ํ•œ๋ฒˆ ๋น„๊ตํ•ด๋ณผ๊นŒ ํ•œ๋‹ค!


๋ณธ๊ฒฉ์ ์ธ ๊ธ€์— ์•ž์„œ Vue 2์— ๋Œ€ํ•œ ์†Œ์‹ ( Official ์ž…๋‹ˆ๋‹น )

Vue 3 ๊ณต์‹๋ฌธ์„œ์—์„œ ๊ณต๋ถ€ ๊ณผ์ •์—์„œ ๋ฐœ๊ฒฌํ•œ ๊ธ€์ด๋‹ค.
Vue 2 ์— ๊ด€ํ•œ ์ง€์›์€ 23๋…„์ด ๋งˆ์ง€๋ง‰ ์ด๋ผ๊ณ  ํ•œ๋‹ค. ํ˜น์‹œ๋ผ๋„ ๋งŽ์ด ๋ถ€์กฑํ•œ ์ด ๊ธ€์„ ์ ‘ํ•œ ๋ชจ๋“  ๋ถ„๋“ค์€ Vue ๊ฐœ๋ฐœ ๊ณต๋ถ€ ๋ฐฉํ–ฅ์„ฑ์— ์žˆ์–ด ์ฐธ๊ณ ํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค!


Vue 3๊ฐ€ ๊ณต์‹ํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค

์œ ๋ช…ํ•œ ํ”„๋ก ํŠธ์—”๋“œ ํ”„๋ ˆ์ž„์›Œํฌ 3์ธ๋ฐฉ (Angular, React (์‚ฌ์‹ค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ), Vue) ์ค‘์—์„œ Vue๋ผ๋Š” ์นœ๊ตฌ๋Š” ํƒ€ ํ”„๋ ˆ์ž„์›Œํฌ์— ๋น„ํ•ด ๋Ÿฌ๋‹์ปค๋ธŒ๊ฐ€ ์ƒ๋Œ€์ ์œผ๋กœ ์™„๋งŒํ•˜๋‹ค. ๊ทธ๋ž˜์„œ ํ•„์ž๋„ ์ •๋ณด๋ณดํ˜ธํ•™์„ ์ „๊ณตํ•˜๋‹ค ์ ์„ฑ์ด ์•ˆ๋งž์•„ ํ”„๋ก ํŠธ์—”๋“œ๋ฅผ ๋…ํ•™ํ•  ๋•Œ ๊ทธ๋Ÿฌํ•œ ์ด์œ ๋กœ Vue๋ฅผ ์ฒ˜์Œ ์„ ํƒํ•˜์—ฌ ๊ฐœ์ธ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค๊ฒŒ ๋˜์—ˆ๋‹ค.

๊ทธ๋งŒํผ Vue๋Š” ํ”„๋ ˆ์ž„์›Œํฌ๋ผ๋Š” ์žฅ์ ์„ ์ตœ๋Œ€ํ•œ ์‚ด๋ ค ๊ฐœ๋ฐœ์ž๋“ค์ด ์ข€ ๋” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ, ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋ ค๊ณ  ํ•  ๋•Œ์˜ ๋‚œ์ด๋„๋ฅผ ์ตœ์†Œํ™”ํ•˜๋ ค๋Š” ๋ชจ์Šต์„ ๋ณด์˜€์—ˆ๋‹ค.

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

Install

์„ค์น˜๋Š” ๊ธฐ์กด Vue 2 ์—์„œ์˜ ๋ฐฉ์‹๊ณผ ํฌ๊ฒŒ ๋‹ค๋ฅด์ง€ ์•Š๋‹ค.
npm create vue@3 ๊ทธ๋Ÿฐ๋ฐ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๊ณต์‹๋ฌธ์„œ๋ฅผ ํ†ตํ•ด ์•Œ๊ฒŒ๋˜์—ˆ๋Š”๋ฐ,

๋ฐ”๋กœ npm init vue@latest
์ด ๋ฐฉ๋ฒ•์€ Node.js ๊ฐ€ ์„ค์น˜๋˜์–ด์žˆ๋Š” ๊ฐ€์ •ํ•˜์— ์‹คํ–‰ํ•˜๋ฉด ๋˜๋Š”๋ฐ, ๊ณต์‹ Vue ํ”„๋กœ์ ํŠธ ๋ฐ ๊ทธ๊ฑฐ์— ํ•„์š”ํ•œ ๋ถ€์†ํ’ˆ(?) ๋“ค์„ ํ•จ๊ป˜ ์„ค์น˜ํ•ด์ฃผ๋Š” ๋ช…๋ น์–ด์ด๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์€ ์„ ํƒ์ง€๊ฐ€ ๋‚˜์˜ค๋Š”๋ฐ, ๊ฐœ๋ฐœ์ž๋“ค์ด ์–ด๋–ป๊ฒŒ ๊ฐœ๋ฐœํ•  ๊ฒƒ์ธ์ง€์— ๋”ฐ๋ผ ๋‹ค๋ฅด๊ฒŒ ์„ค์ •ํ•ด์ฃผ๋ฉด ๋œ๋‹ค. ์ฐธ๊ณ ๋กœ ํ•˜๋‹จ์€ Vue ๊ณต์‹ ํ™ˆํ”ผ์˜ Default ๊ฐ’์ด๋‹ค.

โœ” Project name: โ€ฆ <your-project-name>
โœ” Add TypeScript? โ€ฆ No / Yes
โœ” Add JSX Support? โ€ฆ No / Yes
โœ” Add Vue Router for Single Page Application development? โ€ฆ No / Yes
โœ” Add Pinia for state management? โ€ฆ No / Yes
โœ” Add Vitest for Unit testing? โ€ฆ No / Yes
โœ” Add Cypress for both Unit and End-to-End testing? โ€ฆ No / Yes
โœ” Add ESLint for code quality? โ€ฆ No / Yes
โœ” Add Prettier for code formatting? โ€ฆ No / Yes

Scaffolding project in ./<your-project-name>...
Done.

์•„ ๋ถ€๊ฐ€์ ์œผ๋กœ ์›๋ž˜๋Š” Vue ๊ฐ€ Default Bundler๋กœ Webpack์„ ์‚ฌ์šฉํ–ˆ๋Š”๋ฐ, ์ด๋ฒˆ์— ๊ณต๋ถ€ํ•˜๋ ค๊ณ  Vue 3 ํ”„๋กœ์ ํŠธ๋ฅผ ์„ค์น˜ํ•ด๋ณด๋‹ˆ ์ž๋™์ ์œผ๋กœ Vite๋กœ ์‚ฌ์šฉ์ด๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์—ˆ๋‹ค. ๋•๋ถ„์— ์ปดํŒŒ์ผ์ด๋ž‘ ์„œ๋ฒ„ ์—ฌ๋Š” ์†๋„๊ฐ€ ์ข€ ๋น ๋ฅด๋‹ค๋Š”๊ฒŒ ๋Š๊ปด์ง€๊ธดํ•œ๋‹ค.

Reference
https://v3-docs.vuejs-korea.org/guide/introduction.html#api-styles
https://javascript.plainenglish.io/differences-between-vue-2-and-vue-3-ee627e2c83a8

profile
ํƒœ์–ด๋‚œ ๊น€์— ๋งŽ์€ ๊ฒฝํ—˜์„ ํ•˜๋ ค๊ณ  ์•„๋“ฑ๋ฐ”๋“ฑ ์• ์“ฐ๋Š” ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž

0๊ฐœ์˜ ๋Œ“๊ธ€