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