Template
๋ทฐ์ ํ ํ๋ฆฟ์ HTML, CSS ๋ฑ์ ๋งํฌ์ ์์ฑ๊ณผ ๋ทฐ ์ธ์คํด์ค์์ ์ ์ํ ๋ฐ์ดํฐ ๋ฐ ๋ก์ง์ ์ฐ๊ฒฐํ์ฌ ์ฌ์ฉ์๊ฐ ๋ธ๋ผ์ฐ์ ์์ ๋ณผ ์ ์๋ ํํ์ HTML๋ก ๋ณํํด์ฃผ๋ ์์ฑ์ด๋ค.
ES5์์ ๋ทฐ ์ธ์คํด์ค์ template ์์ฑ ํ์ฉ
์ฑ๊ธ ํ์ผ ์ปดํฌ๋ํธ ์ฒด๊ณ์
<template>
์ฝ๋ ํ์ฉ
ํ ํ๋ฆฟ ์์ฑ์ ๋ค์๊ณผ ๊ฐ์ด ๋๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค.
1. ES5์์ ๋ทฐ ์ธ์คํด์ค์ template ์์ฑ ํ์ฉ
์ด์ ์์ ์์ ์ฃผ๋ก ์ฌ์ฉํ ์์ ๊ฐ์ ์ฝ๋์ด๋ค.
ํ
ํ๋ฆฟ์ ์ฌ์ฉ์๊ฐ ๋ณผ ์๋ ์์ง๋ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ด๋ถ์ ์ผ๋ก template ์์ฑ์์ ์ ์ํ ๋งํฌ์
+ ๋ทฐ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ๋ ๊ธฐ๋ฐ์ render()
ํจ์๋ก ๋ณํํ๋ค. ๋ณํ๋ render()
ํจ์๋ ์ต์ข
์ ์ผ๋ก ์ฌ์ฉ์๊ฐ ๋ณผ ์ ์๊ฒ ํ๋ฉด์ ๊ทธ๋ฆฌ๋ ์ญํ ์ ํ๋ค.
template ์์ฑ์ ์ฌ์ฉํ์ง ์์ ๊ฒฝ์ฐ
template ์์ฑ์ ์ฌ์ฉํ์ง ์์ ๊ฒฝ์ฐ์๋ ์ฐ์ <h3>{{message}}</h3>
์ฝ๋๋ฅผ ํ๋ฉด์ ํ์ํ๊ณ , ์ธ์คํด์ค๊ฐ ์์ฑ๋๋ฉด message์ ๊ฐ์ data์์ฑ ์์ ๊ฐ์ผ๋ก ์นํํ๋ค.
template ์์ฑ์ ์ฌ์ฉํ ๊ฒฝ์ฐ
template์์ฑ์ ์ฌ์ฉํ๋ฉด ์๋ฌด ๋ด์ฉ์ด ์๋ค๊ฐ ์ธ์คํด์ค๊ฐ ์์ฑ๋๋ฉด <h3>{{message}}</h3>
์ฝ๋๊ฐ ํ๋ฉด์ ์ถ๊ฐ๋์ด ํ์๋๋ค.
2. ์ฑ๊ธ ํ์ผ ์ปดํฌ๋ํธ ์ฒด๊ณ์ <template>
์ฝ๋ ํ์ฉ
<template>
์ฝ๋ ํ์ฉ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ
๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ์ HTML ํ๋ฉด ์์๋ฅผ ๋ทฐ ์ธ์คํด์ค์ ๋ฐ์ดํฐ์ ์ฐ๊ฒฐํ๋ ๊ฒ์ ์๋ฏธํ๋ค.
{{}}
๋ทฐ ์ธ์คํด์ค์ ๋ฐ์ดํฐ๋ฅผ HTML ํ๊ทธ์ ์ฐ๊ฒฐํ๋ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ํ ์คํธ ์ฝ์ ๋ฐฉ์์ด๋ค.
data ์์ฑ์ message ๊ฐ์ {{message}}
์ ์ฐ๊ฒฐํ์ฌ ํ๋ฉด์ ๋ํ๋ด๋ ์ฝ๋์ด๋ค. ์ฌ๊ธฐ์ data ์์ฑ์ message ๊ฐ์ด ๋ณ๊ฒฝ๋๋ฉด ๋ทฐ ๋ฐ์์ฑ์ ์ํด ํ๋ฉด์ด ์๋์ผ๋ก ๊ฐฑ์ ๋๋ค.
๋ง์ฝ์ ๋ทฐ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋์ด๋ ๊ฐ์ ๋ฐ๊พธ๊ณ ์ถ์ง ์๋ค๋ฉด v-once
์์ฑ์ ์ฌ์ฉํ๋ฉด๋๋ค.
v-bind
v-bind
๋ id, class, style ๋ฑ์ HTML ์์ฑ ๊ฐ์ ๋ทฐ ๋ฐ์ดํฐ ๊ฐ์ ์ฐ๊ฒฐํ ๋ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ ์ฐ๊ฒฐ ๋ฐฉ์์ด๋ค.
๋ค์๊ณผ ๊ฐ์ด v-bind ์์ฑ์ผ๋ก ์ง์ ํ HTML ์์ฑ์ด๋ props ์์ฑ์์ ์ ๋์ฌ๋ก ๋ถ์ฌ์ฃผ๋ฉด๋๋ค.
์ฝ๋๋ฅผ ์คํํ๋ฉด ๋ฐ์ดํฐ์ ๊ฐ์ด ๊ฐ <p>
์ ์ฐ๊ฒฐ๋์ด ํ๋ฉด์ ๋ํ๋๋ค.
์ฌ๊ธฐ์ v-bind:
๋ฌธ๋ฒ์ :
๋ก ๊ฐ์ํํ ์ ์๋ค. ์๋ฅผ ๋ค์ด v-bind:id
๋ :id
์ ๊ฐ์ ๋์์ ํ๋ค.
์๋ฐ์คํฌ๋ฆฝํธ ํํ์
๋ทฐ์ ํ
ํ๋ฆฟ์์๋ ์๋ฐ์คํฌ๋ฆฝํธ ํํ์์ ์ธ ์ ์๋ค. {{}}
์์ ์๋ฐ์คํฌ๋ฆฝํธ ํํ์์ ๋ฃ์ผ๋ฉด ๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ ํํ์์ ์ฌ์ฉํ ๋ ์ฃผ์ํด์ผํ ์ ์ด ์๋ค.
์๋ฐ์คํฌ๋ฆฝํธ ์ ์ธ๋ฌธ๊ณผ ๋ถ๊ธฐ ๊ตฌ๋ฌธ์ ์ฌ์ฉํ ์ ์๋ค.
๋ณต์กํ ์ฐ์ฐ์ ์ธ์คํด์ค ์์์ ์ฒ๋ฆฌํ๊ณ ํ๋ฉด์๋ ๊ฐ๋จํ ์ฐ์ฐ ๊ฒฐ๊ณผ๋ง ํ์ํด์ผํ๋ค.
computed
cpmputed ์์ฑ์ ๋ฐ์ดํฐ ์ฐ์ฐ๋ค์ ์ ์ํ๋ ์์ญ์ด๋ค.
๋ณต์กํ ๊ณ์ฐ์ computed
(๋ฐ์ดํฐ ์์ฑ์ ์๋์ผ๋ก ๊ณ์ฐํด์ฃผ๋ ์์ฑ)๋ฅผ ์ด์ฉํ์ฌ ๋ํ๋ด๋ ๊ฒ์ด ์ข๋ค. HTML์ ์ต์ข
์ ์ผ๋ก ํํ๋ ๊ฐ๋ง ๋ํ๋ด๊ณ , ๋ฐ์ดํฐ์ ๊ธฐ๋ณธ์ฐ์ฐ์ ์๋ฐ์คํฌ๋ฆฝํธ ๋จ์์ ํจ์ผ๋ก์จ ํ๋ฉด๋จ ์ฝ๋์ ๊ฐ๋
์ฑ์ ๋์ผ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค. ๋ํ ๋ฐ๋ณต์ ์ธ ์ฐ์ฐ์ ๋ํด์๋ ๋ฏธ๋ฆฌ ๊ณ์ฐํ์ฌ ์ ์ฅํด ๋๊ณ , ํ์ํ ๋ ๋ฐ๋ก ๋ถ๋ฌ์ค๋ caching ํจ๊ณผ๋ฅผ ์ป์ ์ ์๋ค.
์ฆ, computed ์์ฑ์ ๋ค์๊ณผ ๊ฐ์ ์ฅ์ ์ ๊ฐ์ง๊ณ ์๋ค.
data ์์ฑ ๊ฐ์ ๋ณํ์ ๋ฐ๋ผ ์๋์ผ๋ก ๋ค์ ์ฐ์ฐํ๋ค.
caching : ๋์ผํ ์ฐ์ฐ์ ๋ฐ๋ณตํด์ ํ์ง ์๊ธฐ ์ํด ์ฐ์ฐ์ ๊ฒฐ๊ณผ ๊ฐ์ ๋ฏธ๋ฆฌ ์ ์ฅํ๊ณ ์๋ค๊ฐ ํ์ํ ๋ ๋ถ๋ฌ์ค๋ ๋์ ( ์ข ์ ๋์ )
computed vs methods
methods ์์ฑ์ ํธ์ถํ ๋๋ง ํด๋น ๋ก์ง์ด ์ํ๋๊ณ , computed ์์ฑ์ ๋์ ๋ฐ์ดํฐ ๊ฐ์ด ๋ณ๊ฒฝ๋๋ฉด ์๋์ ์ผ๋ก ์ํ๋๋ค. ์ฆ, ์๋์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ฐฑ์ ํ๋์ง, ๋ฅ๋์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ฐฑ์ ํ๋์ง์ ์ฐจ์ด์ด๋ค.
methods์์ฑ์ ์ํํ ๋๋ง๋ค ์ฐ์ฐ์ ํ๊ธฐ ๋๋ฌธ์ ๋ณ๋๋ก ์บ์ฑ์ ํ์ง ์์ง๋ง, computed ์์ฑ์ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋์ง ์๋ ํ ๋ฐ์ดํฐ๋ฅผ ์บ์ฑํ๊ณ ์๋ค๊ฐ, ํ์ํ ๋ ๋ฐํํด ์ค๋ค. ๋ฐ๋ผ์, ๋ณต์กํ ์ฐ์ฐ์ ๋ฐ๋ณต ์ํํด์ ํ๋ฉด์ ๋ํ๋ด์ผ ํ๋ค๋ฉด, computed ์์ฑ์ ์ด์ฉํ๋ ๊ฒ์ด ์ฑ๋ฅ๋ฉด์์ ๋ ํจ์จ์ ์ด๋ค.
computed ์์ฑ์ ์ข
์ ๋์์ ๋ฐ๋ผ ์ ์ฅ(์บ์ฑ)๋๊ธฐ ๋๋ฌธ์ Date.now()
์ ๊ฐ์ด ์๋ฌด๊ณณ์๋ ์์กดํ์ง ์๋ ์์ฑ์ ์ ๋๋ก update๋์ง ์๋๋ค.
computed vs watch
watch ์์ฑ์ ๋ฐ์ดํฐ ๋ณํ๋ฅผ ๊ฐ์งํด ์๋์ผ๋ก ํน์ ๋ก์ง์ ์ํํ๋ค. computed ์์ฑ๊ณผ ์ ์ฌํ์ง๋ง computed ์์ฑ์ ๋ด์ฅ API๋ฅผ ํ์ฉํ ๊ฐ๋จํ ์ฐ์ฐ์ ์ ํฉํ ๋ฐ๋ฉด, watch ์์ฑ์ ๋ฐ์ดํฐ ํธ์ถ๊ณผ ๊ฐ์ด ์๊ฐ์ด ์๋์ ์ผ๋ก ๋ง์ด ์๋ชจ๋๋ ๋น๋๊ธฐ ์ฒ๋ฆฌ์ ์ ํฉํ๋ค.
Directive
๋ทฐ ๋๋ ํฐ๋ธ๋ HTML ํ๊ทธ ์์ v-์ ๋์ฌ
๋ฅผ ๊ฐ์ง๋ ๋ชจ๋ ์์ฑ๋ค์ ์๋ฏธํ๋ค. ์์์ ๋ค๋ฃฌ v-bind
์์ฑ๋ ๋๋ ํฐ๋ธ์ ํด๋น๋๋ค. ๋๋ ํฐ๋ธ๋ ํ๋ฉด์ ์์๋ฅผ ๋ ์ฝ๊ฒ ์กฐ์ํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๊ธฐ๋ฅ์ผ๋ก ๋ทฐ์ ๋ฐ์ดํฐ ๊ฐ์ด ๋ณ๊ฒฝ๋์์ ๋ ํ๋ฉด์ ์์๋ค์ด ๋ณ๊ฒฝ๋ ๋ฐ์ดํฐ ๊ฐ์ ๋ฐ๋ผ ๊ฐฑ์ ๋๋ค. ํ๋ฉด์ ์์๋ฅผ ์ง์ ์ ์ดํ ํ์์์ด ๋ทฐ์ ๋๋ ํฐ๋ธ๋ฅผ ํ์ฉํด ํ๋ฉด ์์๋ฅผ ์กฐ์ํ ์ ์๋ค.
๋๋ ํฐ๋ธ ์ข ๋ฅ
์ญํ
v-if
์ง์ ํ ๋ทฐ ๋ฐ์ดํฐ ๊ฐ์ ์ฐธ, ๊ฑฐ์ง ์ฌ๋ถ์ ๋ฐ๋ผ ํด๋น HTML ํ๊ทธ๋ฅผ ํ๋ฉด์ ํ์ํ๊ฑฐ๋ ํ์ํ์ง ์๋๋ค. (ํด๋น ํ๊ทธ ์์ ํ ์ญ์ )
v-for
์ง์ ํ ๋ทฐ ๋ฐ์ดํฐ์ ๊ฐ์๋งํผ ํด๋น HTML ํ๊ทธ๋ฅผ ๋ฐ๋ณต ์ถ๋ ฅํ๋ค.
v-show
v-if์ ์ ์ฌํ๊ฒ ๋ฐ์ดํฐ์ ์ง์ ์ฌ๋ถ์ ๋ฐ๋ผ ํด๋น HTML ํ๊ทธ๋ฅผ ํ๋ฉด์ ํ์ํ๊ฑฐ๋ ํ์ํ์ง ์๋๋ค. (display:none
css ๋ฅผ ์ฃผ์ด ์ค์ ํ๊ทธ๋ ๋จ์ ์๊ณ , ํ๋ฉด์์ผ๋ก๋ง ๋ณด์ด์ง ์์)
v-bind
HTML ํ๊ทธ์ ๊ธฐ๋ณธ ์์ฑ๊ณผ ๋ทฐ ๋ฐ์ดํฐ ์์ฑ ์ฐ๊ฒฐ
v-on(@)
ํ๋ฉด ์์์ ์ด๋ฒคํธ๋ฅผ ๊ฐ์งํ์ฌ ์ฒ๋ฆฌํ ๋ ์ฌ์ฉ
v-on:
์ ๊ฐ์ํํ ๋ฌธ๋ฒ์ @
์ด๋ค.
v-model
form์์ ์ฃผ๋ก ์ฌ์ฉ๋๋ ์์ฑ์ผ๋ก, ํผ์ ์
๋ ฅํ ๊ฐ์ ๋ทฐ ์ธ์คํด์ค์ ๋ฐ์ดํฐ์ ์ฆ์ ๋๊ธฐํํ๋ค. ํ๋ฉด์ ์
๋ ฅ๋ ๊ฐ์ ์ ์ฅํด ์๋ฒ์ ๋ณด๋ด๊ฑฐ๋ watch
์ ๊ฐ์ ์์ฑ์ ์ด์ฉํด ์ถ๊ฐ ๋ก์ง์ ์ํํ ์ ์๋ค. <input>
, <select>
, <textarea>
ํ๊ทธ์๋ง ์ฌ์ฉ๊ฐ๋ฅ
์ด๋ฒคํธ ์ฒ๋ฆฌ
๋ทฐ ํ๋ฉด์์ ๋ฐ์ํ ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด v-on
๋๋ ํฐ๋ธ์ methods
์์ฑ์ ํ์ฉํ๋ค.
๋ค์ ์์ ๋ v-on:click ๋๋ ํฐ๋ธ๋ฅผ ์ถ๊ฐํ์ฌ ํด๋ฆญ ๋ฒํผ ํด๋ฆญ์ clickBtn
๋ฉ์๋๊ฐ ์คํ๋๋ค.
๋ค์๊ณผ ๊ฐ์ด ์ธ์๋ฅผ ๋๊ธธ ์ ์๋ค. ์ถ๊ฐ์ ์ผ๋ก event ์ธ์๋ฅผ ์ด์ฉํด ํ๋ฉด ๋ ์ด๋ฒคํธ์ ์ ๊ทผํ ์ ์๋ค.
function(event){}
์ ๊ฐ์ด event ์ธ์๋ฅผ ์ ์ํ๋ฉด ํด๋น ๋ ์์์ ์ด๋ฒคํธ ๊ฐ์ฒด์ ์ ๊ทผํ ์ ์๋ค.
Last updated