UI(HTML , CSS , JS)를 재사용할 수 있도록 정의한 것
컴포넌트 정의
→ 컴포넌트 등록
→ 컴포넌트 사용
문자열 템플릿
// BookComponent.js 파일
export default {
data() {
return {
subtitle: '도서명'
}
},
template: `
<article class="book">
<div class="book__subtitle">{{ subtitle }}</div>
<div class="book__title">
HTML 강좌
</div>
</article>
`
}
Single File Component
.js는 HTML과 Javascript는 모듈화 할 수 있지만 css는 빠져있음
문자열 템플릿은 가독성이 떨어짐
template
script
style
로 구성
// BookComponent.vue 파일
<template>
<article class="book">
<div class="book__subtitle">{{ subtitle }}</div>
<div class="book__title">
HTML 강좌
</div>
</article>
</template>
<script>
export default {
data() {
return {
subtitle: '도서명'
}
},
}
</script>
<style scoped>
</style>
전역등록
app.componet
를 이용해서 애플리케이션 전역에서 사용할 수 있도록 설정
const app = createApp({ ... })
app.component('BookComponent', BookComponent)
지역등록
vue인스턴스의 component
속성 안에 정의
해당 Vue인스턴스에서 지역 등록된 컴포넌트 사용
const app = createApp({
components: {
BookComponent: BookComponent
}
})
PascalCase
OR kebab-cased
<BookComponent></BookComponent>
<book-component></book-component>
페이지에 CDN 으로 import
<script src="https://unpkg.com/vue@next"></script>
<!-- 또는 -->
<script src="https://unpkg.com/vue@3.2.31"></script>
npm을 사용하여 import
npm install vue@next
CLI를 사용하여 프로젝트의 기본구성을 완료한 상태에서 프로젝트 구성
Vue CLI
Vite
npm init vue@latest
cd {product name}
npm install
npm run dev