์ด๋ฒ ์ฑํฐ๋ Vuejs์ ๋ผ์ดํ ์ฌ์ดํด์ ๋ํด ๋ค๋ฃจ์์ต๋๋ค.
โ ๏ธ ์ ๋ฆฌํ ๋ด์ฉ์ ์คํ๋ ์๋ชป๋ ์ ๋ณด๊ฐ ์์ ์ ์์ต๋๋ค. ๋๊ธ๋ก ์๋ ค์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค.
createApp
ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์๋ก์ด ์ดํ๋ฆฌ์ผ์ด์
์ธ์คํด์ค๋ฅผ ์์ฑํ๊ณ createApp
์ ์ ๋ฌ๋ ์ต์
์ ๋ฃจํธ ์ปดํฌ๋ํธ๋ฅผ ๊ตฌ์ฑํ๋๋ฐ ์ฌ์ฉ๋๋ค. ์ด ์ปดํฌ๋ํธ๋ ์ดํ๋ฆฌ์ผ์ด์
์ mountํ ๋, ๋ ๋๋ง์ ์์์ ์ผ๋ก ์ฌ์ฉ๋๋ค.
<div id="app">
</div>
์์ ๊ตฌ์กฐ์์ Vue ์ดํ๋ฆฌ์ผ์ด์
์ ๋ง์ดํธ ํ๊ณ ์ถ์ผ๋ฉด #app
์ mount๋ก ์ ๋ฌํด์ ํ๋ค.
const app = Vue.createApp(RootComponent)
const vm = app.mount('#app')
mount๋ ๋ฃจํธ ์ปดํฌ๋ํธ ์ธ์คํด์ค๋ฅผ ๋ฐํํ๋ค.
app = Vue.createApp(options)
app.mount(element)
๊ธฐ๋ณธ์ ์ธ ์ด๋ฒคํธ, ์๋ช ์ฃผ๊ธฐ๋ค์ ์ด๊ธฐํ ๋จ๊ณ๋ฅผ ๊ฑฐ์น๋ค
๋ฌด์์ธ๊ฐ๊ฐ ์์ฑ๋๊ธฐ ์ง์ ์ธ ๋ผ์ดํ์ฌ์ดํด ํ
๊ธฐ๋ณธ์ ์ธ ๋ฐ์ดํฐ์ ์ฃผ์ ๊ณผ ๋ฐ์์ฑ ๊ตฌ์กฐ ํ๋จ
vuejs๊ฐ ์์ฑ๋ ์งํ๋ผ๋ ๋ผ์ดํ์ฌ์ดํด ํ
template ์ต์ ์ ๊ฐ์ง๊ณ ์์ผ๋ฉด ํ๋์ ์ปดํฌ๋ํธ๋ก ํด์์ด ๋๋ฉด์ render ํจ์ ๋ด๋ถ์์ ํฌํ๋ฆฟ ๋ด๋ถ๊ฐ ์ปดํ์ผ ๋๊ณ ์์ผ๋ฉด mount์ ์ฐ๊ฒฐํ์ฌ html๊ตฌ์กฐ์ ์ฐ๊ฒฐ
html๊ณผ vuejs์ด ์ฐ๊ฒฐ์ด ๋๊ธฐ ์ง์ ์ํ
์ค๋น๋ vuejs ์ธ์คํด์ค์ ์๋ฐ์คํฌ๋ฆฝํธ ๋ด์ฉ๋ค์ html๊ณผ ์ฐ๊ฒฐ
์ฐ๊ฒฐ์ด ๋๊ณ ๋์ ์คํ๋๋ ๋ผ์ดํ ์ฌ์ดํด ํ , DOM API๋ฅผ ๋ค๋ฃฐ ์ ์์
<script>
const App = {
data() {
return {
msg: 'Hello Vue!'
}
},
beforeCreate() {
console.log('beforeCreate!');
},
created() {
console.log('created!');
},
beforeMount() {
console.log('beforeMount!');
},
mounted() {
console.log('mounted!');
}
}
const app = Vue.createApp(App)
const vm = app.mount('#app')
</script>
์์ ์ฝ๋๋ฅผ ์๋ช ์ฃผ๊ธฐ์ ํด๋นํ๋ ์์์ ๋ฐ๋ผ ์ถ๋ ฅ๋จ!
Vuejs๋ฅผ ์๋ ์ ํ๋ฒ ์ฌ์ฉํด๋ณธ ์ ์ด ์์๋๋ฐ ์๋ก ๊ฐ์๋ฅผ ๋ฃ๋๋ฐ ์ ๋ง ๊ฒํฅ๊ธฐ๋ก ๋ฐฐ์ ๊ณ ์ฌ์ฉํ๊ตฌ๋ ์์ผ ๊นจ๋ฌ์๋ค. ์ธ์คํด์ค ์์ฑ, ๋ผ์ดํ์ฌ์ดํด, ํ ํ๋ฆฟ ๋ฌธ๋ฒ, ๊ทธ๋ฆฌ๊ณ Proxy๊ฐ์ฒด๊ฐ ์ด๋ค ์ญํ ์ ํ๋์ง์ ๋ํด์ ์๋ฆฌ๋ฅผ ์ดํดํ๋ค๋ณด๋ vuejs๊ฐ ์ด๋ค์์ผ๋ก ๋ง๋ค์ด์ก๋์ง ์กฐ๊ธ ์๊ฒ ๋์๋ค.
์์ฆ ๋ง์ด ํค์ดํด์ง ๋ง์์ด์๋๋ฐ ์๋ก ๋ค์ก๊ณ ์์ํด์ผ์ง๐ช๐ป