๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Vue.js9

๋‹จ์ผ ํŒŒ์ผ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ด์šฉํ•œ Vue ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ 1. ๋‹จ์ผ ํŒŒ์ผ ์ปดํฌ๋„ŒํŠธ(SFC)Vue ์ปดํฌ๋„ŒํŠธ๋ฅผ ํ•˜๋‚˜์˜ ํŒŒ์ผ(.vue)๋กœ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ, `template`, `script`, `style`์„ ํ•œ ๊ณณ์— ํฌํ•จํ•˜์—ฌ ๊ด€๋ฆฌ ๊ฐ€๋Šฅํ•จ.1.1 ๋‹จ์ผ ํŒŒ์ผ ์ปดํฌ๋„ŒํŠธ์˜ ํ•„์š”์„ฑ์ปดํฌ๋„ŒํŠธ ๊ธฐ๋ฐ˜ ์•„ํ‚คํ…์ฒ˜๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์œ ์ง€๋ณด์ˆ˜์„ฑ๊ณผ ์žฌ์‚ฌ์šฉ์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•  ์ˆ˜ ์žˆ์ŒHTML, JavaScript, CSS๋ฅผ ํ•˜๋‚˜์˜ ํŒŒ์ผ์—์„œ ๊ด€๋ฆฌํ•˜์—ฌ ์ฝ”๋“œ ๊ฐ€๋…์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ดํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ๋ฅผ ์ฒด๊ณ„์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด ํ™•์žฅ์„ฑ๊ณผ ํ˜‘์—…์— ์šฉ์ดํ•จ1.2 SFC ํŒŒ์ผ ๊ตฌ์กฐ 2. ํ”„๋กœ์ ํŠธ ์„ค์ •2.1 ๋ฒˆ๋“ค๋ง(Bundling) ๊ฐœ๋…Vue ํ”„๋กœ์ ํŠธ๋Š” ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‹คํ–‰๋˜๊ธฐ ์ „์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํŒŒ์ผ์„ ํ•˜๋‚˜์˜ ๋ฒˆ๋“ค๋กœ ๋ฌถ์–ด ์ตœ์ ํ™”๋œ ์ƒํƒœ๋กœ ๋ณ€ํ™˜ํ•จVite๋Š” ๋น ๋ฅธ ๊ฐœ๋ฐœ ์„œ๋ฒ„์™€ ๋นŒ๋“œ ์†๋„๋ฅผ ์ œ๊ณตํ•˜๋Š” Vue ๊ณต์‹ ์ถ”์ฒœ ๋ฒˆ๋“ค๋ง ๋„๊ตฌ์ž„2.2 .. 2025. 4. 4.
06 ์Šคํƒ€์ผ ์ ์šฉ 1. HTML ์š”์†Œ์— ์Šคํƒ€์ผ ์ ์šฉVue์—์„œ๋Š” `v-bind:style` ๋˜๋Š” `:style`์„ ์‚ฌ์šฉํ•˜์—ฌ ๋™์ ์œผ๋กœ ์Šคํƒ€์ผ์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Œ.1.1 ์ธ๋ผ์ธ ์Šคํƒ€์ผVue์˜ data ์†์„ฑ์—์„œ ์Šคํƒ€์ผ์„ ๊ฐ์ฒด ํ˜•ํƒœ๋กœ ์ •์˜ํ•˜๊ณ , ์ด๋ฅผ `:style`์— ๋ฐ”์ธ๋”ฉํ•˜์—ฌ ์ ์šฉ.CSS ์†์„ฑ์€ ์นด๋ฉœ ํ‘œ๊ธฐ๋ฒ•(camelCase)์œผ๋กœ ์ž‘์„ฑํ•ด์•ผ ํ•จ. ํ…Œ์ŠคํŠธ let vm = Vue.createApp({ data() { return { style1: { backgroundColor: "aqua", color: "black", } }; }, methods: { overEvent() { .. 2025. 4. 4.
05 ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ 1. ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ ๋ฐฉ์‹1.1 ์ธ๋ผ์ธ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ`v-on` ๋””๋ ‰ํ‹ฐ๋ธŒ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฒคํŠธ๋ฅผ ์ง์ ‘ ์ฒ˜๋ฆฌ์ž‘์„ฑ๋ฒ•:๊ธฐ๋ณธ: `v-on:[์ด๋ฒคํŠธ ์ด๋ฆ„]="ํ‘œํ˜„์‹"`๋‹จ์ถ• ํ‘œํ˜„: `@[์ด๋ฒคํŠธ ์ด๋ฆ„]="ํ‘œํ˜„์‹"`์ด๋ฒคํŠธ ๊ฐ์ฒด ํ•„์š” ์‹œ: `@[์ด๋ฒคํŠธ ์ด๋ฆ„]="ํ•จ์ˆ˜๋ช…($event)"`์˜ˆ์ œ: ๊ธฐ๋ณธ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ ๊ธˆ์•ก: ์ž…๊ธˆ ์ธ์ถœ ๊ณ„์ขŒ ์ž”๊ณ : [{{balance}}]1.2 ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ๋ฉ”์„œ๋“œ`methods` ์˜ต์…˜์— ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•˜์—ฌ ์‚ฌ์šฉ์กฐ๊ฑด๋ฌธ, ๋ฐ˜๋ณต๋ฌธ ๋“ฑ ๋ณต์žกํ•œ ๋กœ์ง์„ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ์˜ˆ์ œ: ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ์‚ฌ์šฉ ๊ธˆ์•ก: ์ž…๊ธˆ ์ธ์ถœ ๊ณ„์ขŒ ์ž”๊ณ : [{{balance}}]2. ์ด๋ฒคํŠธ ๊ฐ์ฒด (event, e)2.1 ์ฃผ์š” ์ด๋ฒคํŠธ ๊ฐ์ฒด ์†์„ฑ์†์„ฑ๋ช… ์„ค๋ช…`target`์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ HTML ์š”์†Œ`currentTar.. 2025. 4. 4.
04 Vue ์ธ์Šคํ„ด์Šค 1. Vue ์ธ์Šคํ„ด์Šค๋ž€?Vue ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ `Vue.createApp()` ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ Vue ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์‹œ์ž‘ํ•จ. Vue ์ธ์Šคํ„ด์Šค๋Š” Vue์˜ ๊ธฐ๋ณธ ๋‹จ์œ„์ด๋ฉฐ, ๋ฐ์ดํ„ฐ์™€ DOM์„ ์—ฐ๊ฒฐํ•˜์—ฌ ๋ฐ˜์‘ํ˜• UI๋ฅผ ์ œ๊ณตํ•จ.let vm = Vue.createApp({ name: "App", data() { return { name: "" }; },}).mount("#app");Vue ์ธ์Šคํ„ด์Šค์˜ ํŠน์ง•Vue ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋‹จ์ผ ๋˜๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ Vue ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑ ๊ฐ€๋Šฅ`mount()` ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ํŠน์ • DOM ์š”์†Œ์— ์—ฐ๊ฒฐ๋จ๋ฐ์ดํ„ฐ, ์ปดํ“จํ‹ฐ๋“œ ์†์„ฑ, ๋ฉ”์„œ๋“œ, ์ƒ๋ช…์ฃผ๊ธฐ ํ›… ๋“ฑ์„ ํฌํ•จํ•จ2. Vue ์ธ์Šคํ„ด์Šค ์˜ต์…˜2.1 data ์˜ต์…˜์ปดํฌ๋„ŒํŠธ์˜ ๋ฐ์ด.. 2025. 4. 3.
03 Vue.js ๊ธฐ์ดˆ์™€ Template 1. MVVM ํŒจํ„ดVue.js๋Š” MVVM(Model-View-ViewModel) ํŒจํ„ด์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค.1.1 MVVM ํŒจํ„ด ๊ตฌ์„ฑ์š”์†ŒModel: ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฐ์ดํ„ฐ์™€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๋‹ด๋‹นView: HTML๊ณผ CSS๋กœ ์ž‘์„ฑ๋œ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์ด๋Š” ๋ถ€๋ถ„ViewModel: View์˜ ์‹ค์ œ ๋…ผ๋ฆฌ ๋ฐ ๋ฐ์ดํ„ฐ ํ๋ฆ„์„ ๋‹ด๋‹นํ•˜๋Š” ๋ถ€๋ถ„2. Vue.js ๊ธฐ๋ณธ ๊ฐœ๋…2.1 ๋ณด๊ฐ„๋ฒ• (Interpolation)๋ฐ์ดํ„ฐ๋ฅผ ํ…œํ”Œใ…‡๋ฆฟ์— ๋™์ ์œผ๋กœ ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•ด {{ }}(์ด์ค‘ ์ค‘๊ด„ํ˜ธ)๋ฅผ ์‚ฌ์šฉ์˜ˆ์ œ: {{ message }}3. Vue ๋””๋ ‰ํ‹ฐ๋ธŒVue์—์„œ ์ œ๊ณตํ•˜๋Š” DOM ์กฐ์ž‘๊ณผ ๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ์„ ์œ„ํ•œ ์†์„ฑ์ž…๋‹ˆ๋‹ค.3.1 ์ฃผ์š” ๋””๋ ‰ํ‹ฐ๋ธŒ ๊ฐœ์š”๋””๋ ‰ํ‹ฐ๋ธŒ ์„ค๋ช… ์˜ˆ์ œv-textํ…์ŠคํŠธ ์ฝ˜ํ…์ธ  ๋ฐ”์ธ๋”ฉv-htmlHTML ์ฝ˜ํ…์ธ  ๋ฐ”์ธ๋”ฉv-bind.. 2025. 4. 3.
02 Vue.js๋ฅผ ์œ„ํ•œ ES6 1. ES6 ์†Œ๊ฐœES6(ECMAScript 6): JavaScript์˜ ํ‘œ์ค€ํ™”๋œ ๋ฒ„์ „ (2015๋…„ ๋“ฑ์žฅ)์ผ๋ถ€ ๋ธŒ๋ผ์šฐ์ €์—์„œ ES6 ๊ธฐ๋Šฅ ๋ฏธ์ง€์› → ์ตœ๊ทผ์—๋Š” ๋Œ€๋ถ€๋ถ„ ์ง€์›๋จ2. let, const2.1 let๋ธ”๋ก {} ๋‹จ์œ„๋กœ ์œ ํšจ ๋ฒ”์œ„ ์ง€์ •์„ ์–ธ ์—†์ด ์‚ฌ์šฉ ์‹œ ์—๋Ÿฌ ๋ฐœ์ƒ (์ง„์ •ํ•œ ์ง€์—ญ๋ณ€์ˆ˜)์ค‘๋ณต ์„ ์–ธ ๋ถˆ๊ฐ€let msg = "GLOBAL";function outer() { let msg = "OUTER"; console.log(msg); if (true) { let msg = "BLOCK"; console.log(msg); }}outer();์‹คํ–‰ ๊ฒฐ๊ณผOUTERBLOCK2.2 const์ƒ์ˆ˜ ์„ ์–ธ์šฉ ํ‚ค์›Œ๋“œ๊ฐ’ ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€ (๋‹จ, ๊ฐ์ฒด๋‚˜ ๋ฐฐ์—ด ๋‚ด๋ถ€ ์†์„ฑ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ)const p1 = { name: 'joh.. 2025. 4. 3.