๐Ÿš€ Vue.js ํ€ต ์Šคํƒ€ํŠธ: 30๋ถ„ ๋งŒ์— ๊ฐ„๋‹จ ์›น์•ฑ ๋งŒ๋“ค๊ธฐ (์ดˆ๋ณด์ž ์นœํ™”์ !)








๐Ÿš€ Vue.js ํ€ต ์Šคํƒ€ํŠธ: 30๋ถ„ ๋งŒ์— ๊ฐ„๋‹จ ์›น์•ฑ ๋งŒ๋“ค๊ธฐ (์ดˆ๋ณด์ž ์นœํ™”์ !)

๐Ÿš€ Vue.js ํ€ต ์Šคํƒ€ํŠธ: 30๋ถ„ ๋งŒ์— ๊ฐ„๋‹จ ์›น์•ฑ ๋งŒ๋“ค๊ธฐ (์ดˆ๋ณด์ž ์นœํ™”์ !)

๊ฐœ์š”

Vue.js๋Š” ์ง„์ž… ์žฅ๋ฒฝ์ด ๋‚ฎ๊ณ  ๋ฐฐ์šฐ๊ธฐ ์‰ฌ์šด ํ”„๋กœ๊ทธ๋ ˆ์‹œ๋ธŒ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค. ์ด ํ€ต ์Šคํƒ€ํŠธ ๊ฐ€์ด๋“œ์—์„œ๋Š” 30๋ถ„ ์•ˆ์— ๊ฐ„๋‹จํ•œ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค๋ฉด์„œ Vue.js์˜ ๊ธฐ๋ณธ ๊ฐœ๋…์„ ๋ฐฐ์šฐ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ดˆ๋ณด์ž๋„ ์‰ฝ๊ฒŒ ๋”ฐ๋ผ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋‹จ๊ณ„๋ณ„๋กœ ์„ค๋ช…ํ•˜๊ณ  ์˜ˆ์ œ ์ฝ”๋“œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์„ค์น˜ ๋ฐ ์„ค์ •

Vue.js๋ฅผ ์‹œ์ž‘ํ•˜๋ ค๋ฉด CDN์„ ์ด์šฉํ•˜๊ฑฐ๋‚˜ npm/yarn์„ ํ†ตํ•ด ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฐ€์ด๋“œ์—์„œ๋Š” CDN์„ ์‚ฌ์šฉํ•˜์—ฌ ๋น ๋ฅด๊ฒŒ ์‹œ์ž‘ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

HTML ํŒŒ์ผ์— ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ Vue.js๋ฅผ ํฌํ•จ์‹œํ‚ต๋‹ˆ๋‹ค:

<script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>

๊ธฐ๋ณธ์ ์ธ Vue.js ๊ตฌ์กฐ ์ดํ•ดํ•˜๊ธฐ

Vue.js๋Š” `new Vue()`๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด ์ธ์Šคํ„ด์Šค๋Š” ๋ฐ์ดํ„ฐ, ๋ฉ”์„œ๋“œ, ๋ผ์ดํ”„์‚ฌ์ดํด ํ›… ๋“ฑ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.


new Vue({
  el: '#app', // Vue ์ธ์Šคํ„ด์Šค๊ฐ€ ์ œ์–ดํ•  DOM ์š”์†Œ ์„ ํƒ์ž
  data: {
    message: 'Hello Vue!'
  }
});
        

์œ„ ์ฝ”๋“œ์—์„œ `el`์€ Vue ์ธ์Šคํ„ด์Šค๊ฐ€ ๊ด€๋ฆฌํ•  HTML ์š”์†Œ๋ฅผ ์ง€์ •ํ•˜๊ณ , `data`๋Š” Vue ์ธ์Šคํ„ด์Šค๊ฐ€ ์‚ฌ์šฉํ•  ๋ฐ์ดํ„ฐ๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. `#app` ์•„์ด๋””๋ฅผ ๊ฐ€์ง„ ์š”์†Œ ์•ˆ์˜ ๋‚ด์šฉ์ด Vue.js์— ์˜ํ•ด ๊ด€๋ฆฌ๋ฉ๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ

Vue.js์˜ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜๋Š” ๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ์ž…๋‹ˆ๋‹ค. `{{ message }}` ์™€ ๊ฐ™์€ ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ HTML์— ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


<div id="app">
  <p>{{ message }}</p>
</div>
        

์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ

Vue.js๋Š” `v-on` ์ง€์‹œ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ฒ„ํŠผ ํด๋ฆญ ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•ฉ๋‹ˆ๋‹ค.


<button v-on:click="handleClick">Click Me</button>
        

methods: {
  handleClick: function() {
    this.message = 'Button clicked!';
  }
}
        

์กฐ๊ฑด๋ถ€ ๋ Œ๋”๋ง

Vue.js๋Š” `v-if` ์ง€์‹œ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์กฐ๊ฑด๋ถ€๋กœ ์š”์†Œ๋ฅผ ๋ Œ๋”๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํŠน์ • ์กฐ๊ฑด์ด ์ถฉ์กฑ๋  ๋•Œ๋งŒ ์š”์†Œ๋ฅผ ํ‘œ์‹œํ•˜๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•ฉ๋‹ˆ๋‹ค.


<p v-if="showParagraph">This paragraph is shown only if showParagraph is true.</p>
        

๋งˆ๋ฌด๋ฆฌ ๋ฐ ์ถ”๊ฐ€ ํ•™์Šต

์ด ํ€ต ์Šคํƒ€ํŠธ ๊ฐ€์ด๋“œ๋ฅผ ํ†ตํ•ด Vue.js์˜ ๊ธฐ๋ณธ์ ์ธ ๊ฐœ๋…์„ ๋ฐฐ์šฐ์…จ์Šต๋‹ˆ๋‹ค. ๋” ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”. Vue.js๋Š” ๊ฐ•๋ ฅํ•˜๊ณ  ์œ ์—ฐํ•œ ํ”„๋ ˆ์ž„์›Œํฌ์ด๋ฉฐ, ์›น ๊ฐœ๋ฐœ์˜ ๋‹ค์–‘ํ•œ ๋ถ„์•ผ์—์„œ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•ž์œผ๋กœ ๋” ๋งŽ์€ ๊ธฐ๋Šฅ๊ณผ ์˜ˆ์ œ๋ฅผ ๋ฐฐ์šฐ๋ฉด์„œ Vue.js๋ฅผ ๋งˆ์Šคํ„ฐํ•ด ๋ณด์„ธ์š”!

Vue.js ๊ณต์‹ ๋ฌธ์„œ



“`.

๋‹ต๊ธ€ ๋‚จ๊ธฐ๊ธฐ