컴포넌트는 Vue 오브젝트를 확장한 오브젝트이다. 확장이란 미리 Vue 오브젝트에 옵션을 정의해 이미 옵션이 정의된 Vue오브젝트를 생성하는 것을 의미함. 컴포넌트를 생성하면 확장된 Vue 인스턴스가 생성.
<div id="app">
<date></date>
<date></date>
<date></date>
</div>
<script>
Vue.Component('date',{
template: '<div>{{ now }}</div>',
data: function () {
return {
now: new Date()
}
}
})
</script>
Vue.Component는 컴포넌트를 글로벌하게 등록하는 메서드
컴포넌트를 사용하면 공통적인 로직이나 템플릿을 엘리먼트를 통해 재활용할 수 있다.
주의할점! : 확장된 Vue 인스턴스, 즉 컴포넌트에서 data를 정의할 때 반드시 함수로 정의해야 한다.
컴포넌트 이름은 하이픈을 포함한 소문자이어야 한다.
로컬 컴포넌트 : Vue 인스턴스 혹은 컴포넌트의 옵션으로 등록해 해당 컴포넌트 내부에서만 사용하도록 지정 할 수 있다.
var dateComponent = {
template: '<div>{{ now }}</div>',
data: function () {
return {
now: new Date()
}
}
}
new Vue({
el: '#app',
components: {
date: dateComponent
}
})
ul, ol, table, select같은 내부에 엘리먼트가 정해져있는 컴포넌트는 is 옵션을 사용해 렌더링해야함
템플릿 분리
<script type="text/x-template" id="todo-component">
<div>
<p></p>
</div>
</script>
<script>
var todoComponent = {
template: '#todo-component',
data: function () {
return {
todos: [
'열심히 일하기',
'효도하기',
'연애하기'
]
}
}
};
new Vue({
el: '#app',
components: {
'todo-component' : todoComponent
}
})
</script>
<script type="text/x-template" id="todo-component"> 와 <template id="todo-component"> 같다
'Frontend > Vue, Nuxt' 카테고리의 다른 글
Computed : get, set (0) | 2021.09.08 |
---|---|
Vue 데이터 전달하기 (0) | 2021.05.18 |
Vue 인스턴스 사용하는 방법 (0) | 2021.05.17 |
Vue 속성 사용 (0) | 2021.05.17 |
Vue Lifecycle (0) | 2021.05.17 |