Vue Instance
๋ทฐ ์ธ์คํด์ค๋ ๋ทฐ๋ก ํ๋ฉด์ ๊ฐ๋ฐํ๊ธฐ ์ํด ํ์์ ์ผ๋ก ์์ฑํด์ผํ๋ ๊ธฐ๋ณธ ๋จ์์ด๋ค.
์ธ์คํด์ค ํ์
์์ฑ์
new Vue()
๋ก ์ธ์คํด์ค๋ฅผ ์์ฑํ ๋ Vue๋ฅผ ์์ฑ์๋ผ๊ณ ํ๋ค. ์์ฑ์๋ ๋ทฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ก๋ฉํ๊ณ ๋๋ฉด ์ ๊ทผํ ์ ์๋ค. ๋ทฐ์์ ๊ฐ๋ฐํ ๋ ํ์ํ ๊ธฐ๋ฅ๋ค์ ์์ฑ์์ ๋ฏธ๋ฆฌ ์ ์ํด ๋๊ณ ์ฌ์ฉ์๊ฐ ๊ทธ ๊ธฐ๋ฅ์ ์ฌ์ ์ํ์ฌ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ๋๋ก ํ๊ธฐ์ํด ์ฌ์ฉํ๋ค.
์์์๋ ๊ฐ์ฒด๋ฅผ ์๋ก ์์ฑํ ๋ ์์ฃผ ์ฌ์ฉํ๋ ์ต์ ๊ณผ ๊ธฐ๋ฅ๋ค์ ๋ฏธ๋ฆฌ ํน์ ๊ฐ์ฒด์ ์ ์ฅํด ๋๊ณ , ์๋ก ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋ ๊ธฐ์กด์ ํฌํจ๋ ๊ธฐ๋ฅ๊ณผ ๋๋ถ์ด ๊ธฐ์กด ๊ธฐ๋ฅ์ ์ฝ๊ฒ ํ์ฅํ์ฌ ์ฌ์ฉํ๋ ๊ธฐ๋ฒ์ด๋ค. ์ผ๋ฐ์ ์ผ๋ก ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ์์ ์ฌ์ฉํ๋ ๊ฐ์ฒด ์ ์ ๋ฐฉ์์ผ๋ก ๋ฏธ๋ฆฌ ์ ์๋ ์์ฑ๊ณผ ๋ฉ์๋๋ฅผ ์ฌํ์ฉํ๊ธฐ ์ํด ์ฌ์ฉํ๋ค.
์ต์
์์ฑ
๋ทฐ ์ธ์คํด์ค ์ต์ ์์ฑ์ ์ธ์คํด์ค๋ฅผ ์์ฑํ ๋ ์ฌ์ ์ํ data, el, template ๋ฑ ์์ฑ์ ์๋ฏธํ๋ค.
์์ฑ | ์ค๋ช |
el | ๋์์ด ๋๋ html element ํน์ css selector |
data | ํ๋ฉด์ ๊ทธ๋ฆฌ๋๋ฐ ์ฌ์ฉํ๋ data๋ฅผ ๋ฐํํ๋ ํจ์ ํน์ data๊ฐ์ฒด |
template | ํ๋ฉด์ ํ์ํ HTML, CSS ๋ฑ์ ๋งํฌ์ ์์๋ฅผ ์ ์ํ๋ ์์ฑ |
methods | ํ๋ฉด ๋ก์ง ์ ์ด์ ๊ด๋ จ๋ ๋ฉ์๋๋ฅผ ์ ์ํ๋ ์์ฑ |
created | ๋ทฐ ์ธ์คํด์ค๊ฐ ์์ฑ๋์๋ง์ ์คํํ ๋ก์ง์ ์ ์ํ ์ ์๋ ์์ฑ |
์ ํจ ๋ฒ์
๋ทฐ ์ธ์คํด์ค๋ฅผ ์์ฑํ๋ฉด HTML์ ํน์ ๋ฒ์ ์์์๋ง ์ต์ ์์ฑ๋ค์ด ์ ์ฉ๋์ด ๋ํ๋๋ค. ์ด๋ฅผ ์ธ์คํด์ค ์ ํจ ๋ฒ์๋ผ๊ณ ํ๋ค. el ์์ฑ์ ๊ฐ์ด ๊ฐ์ง ๋ ์์๊ฐ ์ธ์คํด์ค์ ์ ํจ ๋ฒ์์ด๋ค.
์์ ์ฝ๋์์๋ #app
์ด el์ด๋ฏ๋ก, <div id="app">{{message}}</div>
๊ฐ ์ ํจ๋ฒ์์ธ ๊ฒ์ด๋ค.
๋ผ์ดํ ์ฌ์ดํด
์ธ์คํด์ค์ ์ํ์ ๋ฐ๋ผ ํธ์ถํ ์ ์๋ ์์ฑ๋ค์ ๋ผ์ดํ ์ฌ์ดํด ์์ฑ์ด๋ผ๊ณ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ ๋ผ์ดํ ์ฌ์ดํด ์์ฑ์์ ์คํ๋๋ ์ปค์คํ ๋ก์ง์ ๋ผ์ดํ ์ฌ์ดํด ํ (hook)์ด๋ผ๊ณ ํ๋ค.
๋ผ์ดํ ์ฌ์ดํด : ์ผ๋ฐ์ ์ผ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ด ๊ฐ์ง๋ ์๋ช ์ฃผ๊ธฐ
์์ ๊ทธ๋ฆผ์ ๋ณด๋ฉด ์ธ์คํด์ค๊ฐ ์์ฑ๋๊ณ ๋์ ํ๋ฉด์ ๋ถ์ฐฉ๋๊ณ , ์๋ฉธ๋๊ธฐ๊น์ง์ ์ ์ฒด์ ์ธ ํ๋ฆ์ ๋ํ๋ธ ๋ทฐ ์ธ์คํด์ค ๋ผ์ดํ ์ฌ์ดํด ๋ค์ด์ด๊ทธ๋จ์ด๋ค.
beforeCreate
์ธ์คํด์ค๊ฐ ์์ฑ๋๊ณ ๋์ ๊ฐ์ฅ ์ฒ์์ผ๋ก ์คํ๋๋ ๋ผ์ดํ ์ฌ์ดํด ๋จ๊ณ์ด๋ค. ์ด ๋จ๊ณ์์๋ data ์์ฑ๊ณผ methods ์์ฑ์ด ์์ง ์ธ์คํด์ค์ ์ ์๋์ด ์์ง ์๊ณ , ๋๊ณผ ๊ฐ์ ํ๋ฉด ์์์๋ ์ ๊ทผํ ์ ์๋ค.
created
data ์์ฑ๊ณผ methods ์์ฑ์ด ์ ์ ๋์๊ธฐ ๋๋ฌธ์ this.data
or this.fetchData()
์ ๊ฐ์ ๋ก์ง๋ค์ ์ด์ฉํด data ์์ฑ๊ณผ methods ์์ฑ์ ์ ์๋ ๊ฐ์ ์ ๊ทผํด ๋ก์ง์ ์คํํ ์ ์๋ค. ์์ง ์ธ์คํด์ค๊ฐ ํ๋ฉด์ ๋ถ์ฐฉ๋๊ธฐ ์ ์ด๊ธฐ ๋๋ฌธ์ template ์์ฑ์ ์ ์๋ ๋ ์์๋ก ์ ๊ทผํ ์ ์๋ค.
data์์ฑ๊ณผ methods ์์ ์ ์ ๊ทผํ ์ ์๋ ์ฒซ ๋ผ์ดํ ์ฌ์ดํด ๋จ๊ณ์ด๋ฉฐ, ์ปดํฌ๋ํธ๊ฐ ์์ฑ๋๊ณ ๋์ ์คํ๋๋ ๋จ๊ณ์ด๊ธฐ ๋๋ฌธ์ ์๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ์ฌ ๋ฐ์์ค๋ ๋ก์ง์ ์ํํ๊ธฐ์ ์ข๋ค.
beforeMount
template ์์ฑ์ ์ง์ ํ ๋งํฌ์
์์ฑ์ render()
ํจ์๋ก ๋ณํ ํ el ์์ฑ์ ์ง์ ํ DOM์ ์ธ์คํด์ค๋ฅผ ๋ถ์ฐฉํ๊ธฐ ์ ์ ํธ์ถ๋๋ ๋จ๊ณ์ด๋ค. render()
ํจ์๊ฐ ํธ์ถ๋๊ธฐ ์ง์ ์ ๋ก์ง์ ์ถ๊ฐํ๊ธฐ ์ข๋ค.
render()๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ํ๋ฉด์ ๋์ ๊ทธ๋ฆฌ๋ ํจ์
mounted
el ์์ฑ์์ ์ง์ ํ ํ๋ฉด ์์(DOM)์ ์ธ์คํด์ค๊ฐ ๋ถ์ฐฉ๋๊ณ ๋๋ฉด ํธ์ถ๋๋ ๋จ๊ณ๋ก, template ์์ฑ์ ์ ์ํ ํ๋ฉด ์์์ ์ ๊ทผํ ์ ์์ด ํ๋ฉด ์์๋ฅผ ์ ์ดํ๋ ๋ก์ง์ ์ํํ๊ธฐ ์ข์ ๋จ๊ณ์ด๋ค. ๋์ ์ธ์คํด์ค๊ฐ ๋ถ์ฐฉ๋์๋ง์ ๋ฐ๋ก ํธ์ถ๋๊ธฐ ๋๋ฌธ์ ํ์ ์ปดํฌ๋ํธ๋ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ํด ์ถ๊ฐ๋ ํ๋ฉด ์์๋ค์ด ์ต์ข HTML ์ฝ๋๋ก ๋ณํ๋๋ ์์ ๊ณผ ๋ค๋ฅผ ์ ์๋ค.
๋ณํ๋๋ ์์ ์ด ๋ค๋ฅผ ๊ฒฝ์ฐ์๋ $next Tick() API๋ฅผ ํ์ฉํ์ฌ HTML ์ฝ๋๋ก ์ต์ข ํ์ฑ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฐ ํ์ ๋ ์ ์ด ๋ก์ง์ ์ถ๊ฐํ๋ค.
beforeUpdate
el ์์ฑ์์ ์ง์ ํ ํ๋ฉด ์์์ ์ธ์คํด์ค๊ฐ ๋ถ์ฐฉ๋๊ณ ๋๋ฉด ์ธ์คํด์ค์ ์ ์ํ ์์ฑ๋ค์ด ํ๋ฉด์ ์นํ๋๋ค. ์นํ๋ ๊ฐ๋ค์ ๋ทฐ์ reactivity(๋ฐ์์ฑ)์ ์ ๊ณตํ๊ธฐ์ํด $watch
์์ฑ์ผ๋ก ์ ๊ทผํ ์ ์๋ค.
Reactivity
๋ทฐ์ ํน์ง ์ค ํ๊ฐ์ง๋ก, ์ฝ๋์ ๋ณํ์ ๋ฐ๋ผ ํ๋ฉด์ด ๋ฐ์ฌ์ ์ผ๋ก ๋ฐ์ํ์ฌ ๋น ๋ฅด๊ฒ ํ๋ฉด์ ๊ฐฑ์ ํ๋ ๊ฒ์ ์๋ฏธํ๋ค.
๊ด์ฐฐํ๊ณ ์๋ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋๋ฉด ๋ณ๊ฒฝ ์์ ์ธ ์ ๋ฐ์ดํฐ์ ์ ๊ทผํ ์ ์์ด ๋ณ๊ฒฝ ์์ ๋ฐ์ดํฐ์ ๊ฐ๊ณผ ๊ด๋ จ๋ ๋ก์ง์ ๋ฏธ๋ฆฌ ๋ฃ์ ์ ์๋ค.
updated
๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋๊ณ ๋์ ๊ฐ์ ๋์ผ๋ก ๋ค์ ํ๋ฉด์ ๊ทธ๋ฆฌ๊ณ ๋๋ฉด ์คํ๋๋ ๋จ๊ณ์ด๋ค. ๋ฐ์ดํฐ ๋ณ๊ฒฝ ํ ํ๋ฉด ์์ ์ ์ด์ ๊ด๋ จ๋ ๋ก์ง์ ์ถ๊ฐํ๊ธฐ ์ข์ ๋จ๊ณ์ด๋ค. ์ด ๋จ๊ณ์์ ๋ฐ์ดํฐ ๊ฐ์ ๋ณ๊ฒฝํ๋ฉด ๋ฌดํ ๋ฃจํ์ ๋น ์ง ์ ์์ผ๋ฏ๋ก ๊ฐ์ ๋ณ๊ฒฝํ๋ ค๋ฉด computed, watch์ ๊ฐ์ ์์ฑ์ ์ด์ฉํด์ผํ๋ค.
beforeDestory
๋ทฐ ์ธ์คํด์ค๊ฐ ํ๊ดด๋๊ธฐ ์ง์ ์ ํธ์ถ๋๋ ๋จ๊ณ๋ก, ์์ง ์ธ์คํด์ค์ ์ ๊ทผํ ์ ์์ผ๋ฉฐ, ๋ทฐ ์ธ์คํด์ค์ ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ๊ธฐ ์ข์ ๋จ๊ณ์ด๋ค.
destroyed
๋ทฐ ์ธ์คํด์ค๊ฐ ํ๊ดด๋๊ณ ๋์ ํธ์ถ๋๋ ๋จ๊ณ๋ก, ๋ทฐ ์ธ์คํด์ค์ ์ ์ํ ๋ชจ๋ ์์ฑ์ด ์ ๊ฑฐ๋๊ณ ํ์์ ์ ์ธํ ์ธ์คํด์ค๋ค ๋ํ ๋ชจ๋ ํ๊ดด๋๋ค.
Last updated