Vue.js
โข
์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๋ง๋ค๊ธฐ ์ํด ์ฌ์ฉํ๋ ์คํ ์์ค Progressive Framework
ํน์ง
โข
Approachable (์ ๊ทผ์ฑ)
โข
Versatile (์ ์ฐ์ฑ)
โข
Performant (๊ณ ์ฑ๋ฅ)
MVVM Pattern
โข
Model + View + ViewModel
โฆ
Model : ์์ ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด
โฆ
View : ์นํ์ด์ง์ DOM
โฆ
ViewModel : Vue์ ์ญํ
โข
๊ธฐ์กด์๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ก view์ ํด๋นํ๋ DOM์ ์ ๊ทผํ๊ฑฐ๋ ์์ ํ๊ธฐ ์ํด jQuery์ ๊ฐ์ library ์ด์ฉ.
โข
Vue๋ view์ model์ ์ฐ๊ฒฐํ๊ณ ์๋์ผ๋ก ๋ฐ์ธ๋ฉํ๋ฏ๋ก ์๋ฐฉํฅ ํต์ ์ ๊ฐ๋ฅํ๊ฒ ํจ
Vue instance ์์ฑ
el
โข
Vue๊ฐ ์ ์ฉ๋ ์์ ์ง์ .
โข
CSS Selector or HTML Element
data
โข
Vue์์ ์ฌ์ฉ๋๋ ์ ๋ณด ์ ์ฅ
โข
๊ฐ์ฒด ๋๋ ํจ์์ ํํ
template
โข
ํ๋ฉด์ ํ์ํ HTML, CSS ๋ฑ์ ๋งํฌ์
์์๋ฅผ ์ ์ํ๋ ์์ฑ
โข
๋ทฐ์ ๋ฐ์ดํฐ ๋ฐ ๊ธฐํ ์์ฑ๋ค๋ ํจ๊ป ํ๋ฉด์ ๊ทธ๋ฆด ์ ์์
methods
โข
ํ๋ฉด ๋ก์ง ์ ์ด์ ๊ด๊ณ๋ method๋ฅผ ์ ์ํ๋ ์์ฑ
โข
๋ง์ฐ์ค ํด๋ฆญ ์ด๋ฒคํธ ์ฒ๋ฆฌ์ ๊ฐ์ด ํ๋ฉด์ ์ ๋ฐ์ ์ธ ์ด๋ฒคํธ์ ํ๋ฉด ๋์๊ณผ ๊ด๋ จ๋ ๋ก์ง์ ์ถ๊ฐ
created
โข
๋ทฐ ์ธ์คํด์ค๊ฐ ์์ฑ๋์ ๋ง์ ์คํํ ๋ก์ง์ ์ ์
Vue instance์ ์ ํจ ๋ฒ์
โข
Vue Instance๋ฅผ ์์ฑํ๋ฉด HTML์ ํน์ ๋ฒ์ ์์์๋ง ์ต์
์์ฑ๋ค์ด ์ ์ฉ
โข
el ์์ฑ๊ณผ ๋ฐ์ ํ ๊ด๊ณ๊ฐ ์๋ค.
Vue instance Life Cycle
โข
Life Cycle์ ํฌ๊ฒ ๋๋๋ฉด Instance์ ์์ฑ, ์์ฑ๋ Instance๋ฅผ ํ๋ฉด์ ๋ถ์ฐฉ, ํ๋ฉด์ ๋ถ์ฐฉ๋ Instance์ ๋ด์ฉ์ด ๊ฐฑ์ , Instance๊ฐ ์ ๊ฑฐ๋๋ ์๋ฉธ์ 4๋จ๊ณ๋ก ๋๋๋ค.
Life Cycle Hooks
beforeCreate
โข
Vue Instance๊ฐ ์์ฑ๋๊ณ ๊ฐ ์ ๋ณด์ ์ค์ ์ ์ ํธ์ถ.
โข
DOM๊ณผ ๊ฐ์ ํ๋ฉด์์์ ์ ๊ทผ ๋ถ๊ฐ
created
โข
Vue Instance๊ฐ ์์ฑ๋ ํ ๋ฐ์ดํฐ๋ค์ ์ค์ ์ด ์๋ฃ๋ ํ ํธ์ถ
โข
Instance๊ฐ ํ๋ฉด์ ๋ถ์ฐฉํ๊ธฐ ์ ์ด๊ธฐ ๋๋ฌธ์ template ์์ฑ์ ์ ์๋ DOM ์์๋ ์ ๊ทผ ๋ถ๊ฐ
โข
์๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ์์ฒญ(http ํต์ )ํ์ฌ ๋ฐ์์ค๋ ๋ก์ง์ ์ํํ๊ธฐ ์ข์
beforeMount
โข
๋ง์ดํธ๊ฐ ์์๋๊ธฐ ์ ์ ํธ์ถ
mounted
โข
์ง์ ๋ element์ Vue Instance ๋ฐ์ดํฐ๊ฐ ๋ง์ดํธ ๋ ํ์ ํธ์ถ
โข
template ์์ฑ์ ์ ์ํ ํ๋ฉด ์์์ ์ ๊ทผํ ์ ์์ด ํ๋ฉด ์์๋ฅผ ์ ์ดํ๋ ๋ก์ง ์ํ
beforeUpdate
โข
๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋ ๋ virtual DOM์ด ๋๋๋ง, ํจ์น๋๊ธฐ ์ ์ ํธ์ถ
updated
โข
Vue์์ ๊ด๋ฆฌํ๋ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋์ด DOM์ด ์
๋ฐ์ดํธ ๋ ์ํ
โข
๋ฐ์ดํฐ ๋ณ๊ฒฝ ํ ํ๋ฉด ์์ ์ ์ด์ ๊ด๋ จ๋ ๋ก์ง์ ์ถ๊ฐ
beforeDestroy
โข
Vue Instance๊ฐ ์ ๊ฑฐ๋๊ธฐ ์ ์ ํธ์ถ
destroyed
โข
Vue Instance๊ฐ ์ ๊ฑฐ๋ ํ์ ํธ์ถ
๋ณด๊ฐ๋ฒ
โข
๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ์ ๊ฐ์ฅ ๊ธฐ๋ณธ ํํ๋ "Mustache" ๊ตฌ๋ฌธ(์ด์ค ์ค๊ดํธ)์ ์ฌ์ฉํ ํ
์คํธ ๋ณด๊ฐ
โฆ
{{ ์์ฑ๋ช
}}
โข
v-once ๋๋ ํฐ๋ธ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ๋ณ๊ฒฝ ์ ์
๋ฐ์ดํธ ๋์ง ์๋ ์ผํ์ฑ ๋ณด๊ฐ์ ์ํ
<span> ๋ฉ์์ง : {{ msg }} </span>
<span v-once> ๋ค์๋ ๋ณ๊ฒฝํ์ง ์์ต๋๋ค : {{ msg }} </span>
HTML
๋ณต์ฌ
Directive
โข
๋๋ ํฐ๋ธ๋ v-์ ๋์ฌ๊ฐ ์๋ ํน์ ์์ฑ
โข
๋๋ ํฐ๋ธ ์์ฑ ๊ฐ์ JavaScript ํํ์์ด ๋๋ค. (v-for๋ ์์ธ)
โข
๋๋ ํฐ๋ธ์ ์ญํ ์ ํํ์์ ๊ฐ์ด ๋ณ๊ฒฝ๋ ๋ ์ฌ์ด๋ ์ดํํธ๋ฅผ ๋ฐ์์ ์ผ๋ก DOM์ ์ ์ฉ
v-model
โข
์๋ฐฉํฅ ๋ฐ์ธ๋ฉ ์ฒ๋ฆฌ๋ฅผ ์ํด์ ์ฌ์ฉ (form์ input, textarea)
โข
view ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝ์ํค๋ฉด model์๋ ์ ์ฉ
<div id = "app">
<input type="text" v-model="message"/><br/>
์
๋ ฅ ๋ฉ์ธ์ง : {{message}}
</div>
HTML
๋ณต์ฌ
v-bind
โข
์๋ฆฌ๋จผํธ์ ์์ฑ๊ณผ ๋ฐ์ธ๋ฉ ์ฒ๋ฆฌ๋ฅผ ์ํด์ ์ฌ์ฉ
โข
v-bind๋ ์ฝ์ด๋ก : ๋ก ์ฌ์ฉ ๊ฐ๋ฅ