Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
Tags
- await
- const
- hoisting
- dex모드
- watchEffect
- Component
- async
- 티스토리챌린지
- computed
- setup 함수
- drective
- 템플릿 문법
- promise
- let
- html 엔티티
- asynchronus
- 오블완
- composition API
- eruda
- mobile dev tools
- watch
- 앱 빌드
- ref
- composition api
- synchronus
- vue
- vitre
- es6
- reactivity
- tdz
Archives
- Today
- Total
uxtry
vue: Single File Component 본문
Single File Component(SFC)는 HTML, JavaScript, CSS를 한 파일에 정의하여 Vue컴포넌트를 작성하는 방식입니다. 아래는 SFC의 구조와 실제 예제를 통해 주요 개념을 설명합니다.
1.SFC의 기본구조
<template>
<!--HTML 템플릿 영역-->
<div>
<h1>{{title}}</h1>
<button>Count: {{ count }}</button>
</div>
</template>
<script>
export default{
data(){
return{
title: "Hello, Vue!",
count: 0
}
},
methds: {
increment(){
this.count += 1;
}
},
}
</script>
<style>
/*CSS 스타일 영역*/
h1{color:blue;}
button{background-color:blue; color:white;}
</style>
★ Vue SFC Playground 코드 실행 →
2. 주요 구성 요소
template
<template>태그는 컴포넌트의 UI를 정의합니다. 여기에는 Vue의 템플릿 문법을 사용하여 데이터 바인딩, 이벤트 처리 등을 선언적으로 작성할 수 있습니다.
Script
<script>태그에서는 컴포넌트의 로직을 정의합니다. Vue의 export default를 통해 컴포넌트의 데이터, 메서드, 라이프사이클 훅등을 관리합니다.
Style
<style>태그에서는 컴포넌트의 스타일을 정의합니다. 필요에 딸 scope속성을 추가하여 해당 스타일을 컴포넌트에만 적용할 수도 있습니다.
3. SFC 예제
다음은 간단한 "todo 리스트" SFC 예제입니다.
todoList.vue
<template>
<div>
<h1>Todo List</h1>
<input v-model="newTask" placeholder="Add a new task" @keyup.enter="addTask" />
<ul>
<li v-for="(task, index) in tasks" :key="index">
<span :class="{ completed: task.done }" @click="toggleTask(index)">
{{ task.text }}
</span>
<button @click="deleteTask(index)">Delete</button>
</li>
</ul>
</div>
</template>
<script>
export default {
data() {
return {
newTask: "",
tasks: []
};
},
methods: {
addTask() {
if (this.newTask.trim()) {
this.tasks.push({ text: this.newTask, done: false });
this.newTask = "";
}
},
toggleTask(index) {
this.tasks[index].done = !this.tasks[index].done;
},
deleteTask(index) {
this.tasks.splice(index, 1);
}
}
};
</script>
<style scoped>
h1 {
color: teal;
}
.completed {
text-decoration: line-through;
}
button {
margin-left: 10px;
color: red;
}
</style>
★ Vue SFC Playground 코드 실행 →
- 데이터바인딩: v-model로 newTask와 <input>요소를 양방향 바인딩.
- 이벤트처리: @keyup.enter로 엔터 키 이벤트를 처리해 addTask호출. @click으로 목록 항목 클릭시 완료상태를 토글하거나 삭제 버튼 클릭시 항목 삭제
- 동적 렌더링: v-for를 사용해 동적으로 할 일 목록을 렌더링. :class로 completed클래스를 동적으로 적용.
- Scoped 스타일: CSS에서 scoped를 사용하여 해당 스타일이 컴포넌트 내에만 적용되도록 설정.
4. SFC의 장점
- 코드 관리 용이성: html, js, css가 한 파일에 모여 있어 컴포넌트 단위 개발이 편리합니다.
- 재사용성: 독립적인 컴포넌트를 만들어 여러 고셍서 재사용 가능.
- 도구지원: Vite와 같은 도구는 SFC를 최적화하고 효율적으로 빌드할 수 있습니다.
'Vue.js 3 주요 문법 (vue:)' 카테고리의 다른 글
| vue: Props (1) | 2024.12.19 |
|---|---|
| vue: 컴포넌트 기초 (1) | 2024.11.29 |
| vue: Watch와 WatchEffect (0) | 2024.11.26 |
| vue: 양방향 바인딩(v-model) (0) | 2024.11.22 |
| vue: 이벤트 처리 (0) | 2024.11.21 |