new Vue({
...
});
new Vue({
el : '#app',
data : {
message : 'Hello Vue.js!'
}
});
<div id="app"></div>
{{ message }}
beforeCreate
: ์ธ์คํด์ค๊ฐ ์์ฑ๋๊ณ ๋์ ๊ฐ์ฅ ์ฒ์์ผ๋ก ์คํ๋๋ ๋ผ์ดํ ์ฌ์ดํด ๋จ๊ณ, data์์ฑ๊ณผ metods์์ฑ์ด ์์ง ์ ์๋์ด ์์ง ์๊ณ , ๋๊ณผ ๊ฐ์ ํ๋ฉด ์์์ ์ ๊ทผํ ์ ์์
created
: data์์ฑ๊ณผ metods์์ฑ์ ์ ์๋ ๊ฐ์ ์ ๊ทผํ์ฌ ๋ก์ง์ ์คํ ํ ์ ์์ง๋ง, ์ธ์คํด์ค๊ฐ ํ๋ฉด์์์ ๋ถ์ฐฉ๋๊ธฐ ์ ์ด๊ธฐ ๋๋ฌธ์ template์์ฑ์ ์ ์๋ ๋ ์์๋ก ์ ๊ทผํ ์ ์์
beforeMount
: template์์ฑ์ ์ง์ ํ ๋งํฌ์
์์ฑ์ render()ํจ์๋ก ๋ณํ ํ el์์ฑ์ ์ง์ ํ ํ๋ฉด ์์์ ์ธ์คํด์ค๋ฅผ ๋ถ์ฐฉํ๊ธฐ ์ ์ ํธ์ถ๋๋ ๋จ๊ณ
mounted
: el์์ฑ์ ์ง์ ํ ํ๋ฉด ์์์ ์ธ์คํด์ค๊ฐ ๋ถ์ฐฉ๋๋ฉด ํธ์ถ๋๋ ๋จ๊ณ
beforeUpdate
: el์์ฑ์์ ์ง์ ํ ํ๋ฉด ์์์ ์ธ์คํด์ค๊ฐ ๋ถ์ฐฉ๋๊ณ ๋๋ฉด ์ธ์คํด์ค์ ์ ์ํ ์์ฑ๋ค์ด ํ๋ฉด์ ์งํ
updated
: ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋๊ณ ๋์ ๊ฐ์ ๋์ผ๋ก ๋ค์ ํ๋ฉด์ ๊ทธ๋ฆฌ๊ณ ๋๋ฉด ์คํ๋๋ ๋จ๊ณ (๋ฐ์ดํฐ ๋ณ๊ฒฝ์ด ์ผ์ด๋ ํ๋ฉด์ด ๋ค์ ๊ทธ๋ ค์ก์ ๋ ํธ์ถ๋จ)
beforeDestroy
: ๋ทฐ ์ธ์คํด์ค๊ฐ ํ๊ดด๋๊ธฐ ์ง์ ์ ํธ์ถ๋๋ ๋จ๊ณ, ์์ง ์ธ์คํด์ค์ ์ ๊ทผํ ์ ์์
destroy
: ๋ทฐ ์ธ์คํด์ค๊ฐ ํ๊ดด๋๊ณ ๋์ ํธ์ถ๋๋ ๋จ๊ณ, ๋ทฐ ์ธ์คํด์ค์ ์ ์๋ ๋ชจ๋ ์์ฑ์ด ์ ๊ฑฐ๋๊ณ ํ์์ ์ ์ธํ ์ธ์คํด์ค๋ค ๋ํ ๋ชจ๋ ํ๊ดด๋๋ค
Vue.component('์ปดํฌ๋ํธ ์ด๋ฆ', {
// ์ปดํฌ๋ํธ ๋ด์ฉ
});
new Vue({
components: {
'์ปดํฌ๋ํธ ์ด๋ฆ' : ์ปดํฌ๋ํธ ๋ด์ฉ
}
});
<div id="app">
<h3>์ฒซ ๋ฒ์งธ ์ธ์คํด์ค ์์ญ</h3>
<!-- ์ ์ญ ์ปดํฌ๋ํธ ํ์ -->
<my-component></my-component>
<!-- ์ง์ญ ์ปดํฌ๋ํธ ํ์ -->
<my-local-component></my-local-component>
</div>
<hr>
<div id="app2">
<h3>๋๋ฒ์งธ ์ธ์คํด์ค ์์ญ</h3>
<!-- ์ ์ญ ์ปดํฌ๋ํธ ํ์ -->
<my-component></my-component>
<!-- ์ง์ญ ์ปดํฌ๋ํธ ํ์ -->
<my-local-component></my-local-component>
</div>
<script>
//์ ์ญ ์ปดํฌ๋ํธ ๋ฑ๋ก
Vue.component('my-component' ,{
template: '<div>์ ์ญ ์ปดํฌ๋ํธ๊ฐ ๋ฑ๋ก๋์์ต๋๋ค!</div>'
});
//์ง์ญ ์ปดํฌ๋ํธ ๋ฑ๋ก
var cmp = {
template:'<div>์ง์ญ ์ปดํฌ๋ํธ๊ฐ ๋ฑ๋ก๋์์ต๋๋ค!</div>' //์ปดํฌ๋ํธ ๋ด์ฉ
};
new Vue({
el:'#app',
components:{ // ์ง์ญ ์ปดํฌ๋ํธ ๋ฑ๋ก
'my-local-component': cmp
}
});
new Vue({
el:'#app2'
});
</script>
Vue.component('child-component', {
porps:['props ์์ฑ ์ด๋ฆ'],
});
<child-component v-bind:props ์์ฑ ์ด๋ฆ = "์์ ์ปดํฌ๋ํธ์ data ์์ฑ"></child-component>
<p v-bind:id = "idA">์์ด๋ ๋ฐ์ธ๋ฉ</p>
<p v-bind:class = "classA">ํด๋์ค ๋ฐ์ธ๋ฉ</p>
<p v-bind:style = "styleA">์คํ์ผ ๋ฐ์ธ๋ฉ</p>
<script>
new Vue({
el: '#app',
data: {
idA: 10,
classA: 'container',
styleA: 'color:blue'
}
});
</script>
<div id="app">
<child-component v-bind:propsdata ="message"></child-component>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
Vue.component('child-component',{
props : ['propsdata'],
template:'<p>{{propsdata}}</p>',
});
new Vue({
el: '#app',
data:{
message: 'Hello Vue!'
}
});
</script>
// ์ด๋ฒคํธ ๋ฐ์
this.$emit('์ด๋ฒคํธ๋ช
');
// ์ด๋ฒคํธ ์์
<child-component v-on:์ด๋ฒคํธ๋ช
= "์์ ์ปดํฌ๋ํธ์ ๋ฉ์๋๋ช
"></child-component>
<div id="app">
<child-component v-on:show-log ="printText"></child-component>
</div>
<script>
Vue.component('child-component',{
template:'<button v-on:click="showLog">show</button>',
methods:{
showLog : function(){
this.$emit('show-log');
}
}
});
new Vue({
el: '#app',
methods: {
printText: function(){
alert('receive an event');
}
}
});
</script>
<div id="app">
<child-component></child-component>
</div>
<script>
var eventBus = new Vue(); // ์ด๋ฒคํธ ๋ฒ์ค๋ฅผ ์ํ ์ถ๊ฐ ์ธ์คํด์ค 1๊ฐ ์์ฑ
Vue.component('child-component', {
template:'<div>ํ์ ์ปดํฌ๋ํธ ์์ญ์
๋๋ค.<button v-on:click="showLog">show</button></div>',
methods: {
showLog: function(){
eventBus.$emit('triggerEventBus', 100); // ์ด๋ฒคํธ๋ฅผ ๋ณด๋ด๋ ์ปดํฌ๋ํธ
}
}
});
var app = new Vue({
el: '#app',
created: function(){
eventBus.$on('triggerEventBus', function(value){ // ์ด๋ฒคํธ๋ฅผ ๋ฐ๋ ์ปดํฌ๋ํธ
console.log("์ด๋ฒคํธ๋ฅผ ์ ๋ฌ ๋ฐ์. ์ ๋ฌ ๋ฐ์ ๊ฐ:" , value);
});
}
});
</script>