๐ 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๋ฅผ ๋ง์คํฐํด ๋ณด์ธ์!
“`.