Vue.js_Template Interpolation ( ๋ณด๊ฐ๋ฒ )
๐ Vue.js
๐ Template Interpolation
Template ๋ฌธ๋ฒ - ๋ณด๊ฐ๋ฒ ( Interpolation )
- Vue ์ธ์คํด์ค์ ์๋ ๋ฐ์ดํฐ๋ฅผ HTML Template์ ํํํ๊ธฐ ์ํด ์ฌ์ฉํ๋ค.
๐ ๋ฌธ์์ด
- ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ์ ๊ฐ์ฅ ๊ธฐ๋ณธ ํํ๋ โMustacheโ ๊ตฌ๋ฌธ ( ์ด์ค ์ค๊ดํธ )์ ์ฌ์ฉํ ํ
์คํธ ๋ณด๊ฐ์ด๋ค.
- ``
-
v-once
๋๋ ํฐ๋ธ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ๋ณ๊ฒฝ ์ ์ ๋ฐ์ดํธ ๋์ง ์๋ ์ผํ์ฑ ๋ณด๊ฐ์ ์ํ-
v-once
```html
๋ฉ์ธ์ง : ๋ค์๋ ๋ณ๊ฒฝํ์ง ์๊ฒ ์ต๋๋ค:// ๋์ค์ ์ฝ์์์ ๋ฐ๊ฟ๋ v-once ๊ตฌ๋ฌธ์ ๋ฐ๋์ง ์๋๋ค ```
-
๐ ์์ HTML
- ์ด์ค ์ค๊ดํธ ( mustaches ) ๋ HTML์ด ์๋ ์ผ๋ฐ ํ ์คํธ๋ก ๋ฐ์ดํฐ๋ฅผ ํด์
- ์ค์ HTML์ ์ถ๋ ฅํ๋ ค๋ฉด v-html ๋๋ ํฐ๋ธ ์ฌ์ฉ
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<div id="app">
<div>๋ฉ์ธ์ง : </div>
<div v-text="`๋ฉ์ธ์ง : ` + msg">๋ฌด์๋๋ค</div>
<div v-html="`๋ฉ์ธ์ง : ` + msg">๋ฌด์๋๋ค</div>
</div>
</body>
<script>
new Vue({
el: "#app",
data:{
msg: '<h2>Hello Vue~</h2>'
}
});
</script>
- ์ถ๋ ฅ ํ๋ฉด
๐ JavaScript ํํ์ ์ฌ์ฉ
- Vue.js๋ ๋ชจ๋ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ ๋ด์์ JavaScript ํํ์์ ๋ชจ๋ ๊ธฐ๋ฅ์ ์ง์
- ํ๊ฐ์ง ์ ํ ์ฌํญ์ ๊ฐ ๋ฐ์ธ๋ฉ์ ํ๋์ ๋จ์ผ ํํ์๋ง ํฌํจ๊ฐ๋ฅ
<body>
<div id="app">
<div> ์ฌ์ฉ</div>
<div></div>
<div></div>
<div></div><br>
<div>v-text ์ฌ์ฉ</div>
<div v-text="msg + ' Vue~'"></div>
<div v-text="num > 10 ? num * num : num + 100"></div>
<div v-text="msg.split('').reverse().join('')"></div>
</div>
</body>
<script>
new Vue({
el: "#app",
data:{
num: 5,
msg: 'Hello'
}
});
</script>
- ์ถ๋ ฅ ํ๋ฉด
Template ๋ฌธ๋ฒ - ๋๋ ํฐ๋ธ ( Directive )
- ๋๋ ํฐ๋ธ๋
v-
์ ๋์ฌ๊ฐ ์๋ ํน์ ์์ฑ - ๋๋ ํฐ๋ธ ์์ฑ ๊ฐ์ ๋จ์ผ JavaScript ํํ์์ด ๋๋ค. ( v-for๋ ์ ์ธ )
-
๋๋ ํฐ๋ธ์ ์ญํ ์ ํํ์์ ๊ฐ์ด ๋ณ๊ฒฝ๋ ๋ ์ฌ์ด๋ ์ดํํธ๋ฅผ ๋ฐ์์ ์ผ๋ก DOM์ ์ ์ฉ
-
v-model
- ์๋ฐฉํฅ ๋ฐ์ธ๋ฉ ์ฒ๋ฆฌ๋ฅผ ์ํด์ ์ฌ์ฉ ( form์ input, textarea )
-
v-bind
- ์๋ฆฌ๋จผํธ์ ์์ฑ๊ณผ ๋ฐ์ธ๋ฉ ์ฒ๋ฆฌ๋ฅผ ์ํด์ ์ฌ์ฉ
- v-bind๋ ์ฝ์ด๋ก โ:โ๋ก ์ฌ์ฉ ๊ฐ๋ฅ
-
v-show
- ์กฐ๊ฑด์ ๋ฐ๋ผ ์๋ฆฌ๋จผํธ๋ฅผ ํ๋ฉด์ ๋ ๋๋ง
- style์ display๋ฅผ ๋ณ๊ฒฝ
- v-if, v-else-if, v-else
- v-show ์ v-if ์ ์ฐจ์ด์
v-if | v-show | |
๋ ๋๋ง | false์ผ ๊ฒฝ์ฐ X | ํญ์ O |
false์ผ ๊ฒฝ์ฐ | ์๋ฆฌ๋จผํธ ์ญ์ | display:none ์ ์ฉ |
template ์ง์ | O | X |
v-else | O | X |
-
v-for
- ๋ฐฐ์ด์ด๋ ๊ฐ์ฒด์ ๋ฐ๋ณต์ ์ฌ์ฉ
v-for="์์๋ณ์์ด๋ฆ in ๋ฐฐ์ด" v-for="(์์๋ณ์์ด๋ฆ, ์ธ๋ฑ์ค) in ๋ฐฐ์ด"
-
template
- ์ฌ๋ฌ ๊ฐ์ ํ๊ทธ๋ค์ ๋ฌถ์ด์ ์ฒ๋ฆฌํด์ผ ํ ๊ฒฝ์ฐ template๋ฅผ ์ฌ์ฉ
- v-if, v-for, component๋ฑ๊ณผ ํจ๊ป ๋ง์ด ์ฌ์ฉ
-
v-cloak
- Vue Instance๊ฐ ์ค๋น๋ ๋ ๊น์ง mustache ๋ฐ์ธ๋ฉ์ ์จ๊ธฐ๋๋ฐ ์ฌ์ฉ
-
[v-cloak]{display:none}
๊ณผ ๊ฐ์ CSS ๊ท์น๊ณผ ํจ๊ป ์ฌ์ฉ - Vue Instance๊ฐ ์ค๋น๋๋ฉด v-cloak์ ์ ๊ฑฐ๋จ
-
Vue Method
- Vue Instance๋ ์์ฑ๊ณผ ๊ด๋ จ๋ data ๋ฐ method์ ์ ์ ๊ฐ๋ฅ
- method์์์ data๋ฅผ
this.๋ฐ์ดํฐ์ด๋ฆ
์ผ๋ก ์ ๊ทผ ๊ฐ๋ฅ