Vue.js 뽀개기 (7) 컴포넌트 기본편
vue
2019.05.13.
본 글은 Udemy에서 제공하는 유료 강좌인 Vue.js Complete Guide를 수강하면서 정리한 내용입니다. 저작권 문제시 바로 글을 내리도록 하겠습니다.
컴포넌트는 Vue를 가장 매력적인 프론트엔드 프레임워크로 만들어주는 기능 중 하나입니다. 저 역시도 기존의 HTML 페이지들을 재사용 가능하도록 캡슐화 시켜주는 컴포넌트라는 기능에 매료되어 React 대신에 Vue를 선택하게 되었습니다.
이번 글에서는 컴포넌트와 관련된 기본적인 사항들에 대해 알아보겠습니다.
컴포넌트 등록하기
- 원하는 HTML 페이지를 템플릿화하여, 여러곳에서 재사용이 가능
- 컴포넌트는 Vue 인스턴스를 확장해주는 역할
- 컴포넌트를 등록하는 방법에는 두가지가 존재:
- 전역 등록 (Global)
- 지역 등록 (Local)
1. 전역 등록
- 추가하려는 컴포넌트 파일 생성
- Vue 인스턴스가 생성된
App.vue
파일에 전역 컴포넌트로 등록
// 컴포넌트 등록
Vue.component('new-component', {
// tagName, options
template: '<div> Hello </div>',
})
// Root 인스턴스 생성
new Vue({
el: '#app',
})
2. 지역 등록
- Vue 인스턴스 내부에 컴포넌트를 정의하여, 특정 컴포넌트의 범위내에서만 사용 가능하게 만듬
// Root 인스턴스 생성
new Vue({
el: '#app',
// 컴포넌트 등록
components: {
'my-comp': Child,
},
})
var Child = {
template: '<p> Hello </p>',
}
컴포넌트를 사용하기
// mycomponent.vue
// export default를 통해 외부로 보내기
<template>
<div>
<p> Hello </p>
</div>
</template>
<script>
export default {
}
</script>
// App.vue
<template>
<div>
<my-comp></my-comp>
</div>
</template>
<script>
import myComp from './mycomponent.vue'
export default {
components: {
myComp
}
}
주의사항!
-
각각의 컴포넌트에 function들이 각각 작동하므로, 한 곳에서 데이터가 변경되어도 다른 곳에서는 바뀌지 않도록 data 객체를 function으로 캡슐화 해서 사용해야함에 주의!
-
에러메세지 = “Component template should contain exactly one root element”
- 부득이하게도, 컴포넌트에 정의된 모든 템플릿 코드는
<div>
태그안에 정의가 되어있어야함
- 부득이하게도, 컴포넌트에 정의된 모든 템플릿 코드는
-
컴포넌트 파일
<script>
태그안에는 무조건export default{}
를 적어서 외부로 보내줘야함 -
한 컴포넌트에 style을 추가하면, 전역 취급되서 다른 컴포넌트들에도 적용됨
<style scoped>
로 표기해서 지역 사용 가능!- Vue가 HTML element들에 임의의 이름을 부여함
Thank You for Visiting My Blog, Have a Good Day 😆
© ChansNotes Powered By Gatsby
© ChansNotes Powered By Gatsby