Vue 3 주요 기능 및 사용법

Vue 3 소개

Vue 3는 Vue 2와의 하위 호환성을 유지하면서 새로운 기능과 개선된 성능을 제공합니다. 주요 변경 사항 중 하나는 Composition API입니다. 이 새로운 접근 방식은 코드를 더 직관적이고 재사용 가능하게 만듭니다.

옵션형 API vs 조합형 API

Vue 3에서는 기존의 옵션형 API 외에도 조합형 API를 지원합니다. 조합형 API는 비슷한 로직을 그룹화하여 관리하기 쉽게 만들어줍니다.


// 옵션형 API 예시
export default {
  data() {
    return { count: 0 };
  },
  methods: {
    increment() {
      this.count++;
    }
  }
};

// 조합형 API 예시
import { ref } from 'vue';
const counter = ref(0);
function increaseCounter() {
  counter.value++;
}

빠른 시작

조합형 API 체험


<template>
  <p>{{ counter }}</p>
  <button @click="increase">증가</button>
</template>

<script>
import { ref } from 'vue';
export default {
  setup() {
    const counter = ref(0);
    const increase = () => counter.value++;
    return { counter, increase };
  }
};
</script>

TypeScript 통합

Vue 3는 TypeScript와 깊이 통합되어 있습니다. 이를 통해 강력한 타입 검사를 제공하며, 런타임 오류를 줄일 수 있습니다.

프로젝트 생성

Vite를 활용한 프로젝트 설정

Vite는 새로운 세대의 프론트엔드 도구로, 빠른 개발 환경을 제공합니다. 특히 HMR(Hot Module Replacement) 기능이 탁월합니다.


npm create vite@latest my-vue-app --template vue
cd my-vue-app
npm install
npm run dev

주요 API 설명

변수 정의

Composition API에서 변수는 보통 ref 또는 reactive를 사용하여 정의됩니다.


import { ref, reactive } from 'vue';

const numberValue = ref(0); // 기본 데이터 형식
const objectValue = reactive({ name: 'John' }); // 객체 또는 배열

계산된 속성

데이터 간의 연관성을 처리할 때 유용합니다.


import { computed, ref } from 'vue';

const firstName = ref('John');
const lastName = ref('Doe');
const fullName = computed(() => `${firstName.value} ${lastName.value}`);

속성 감시

특정 값이 변경될 때마다 동작하도록 설정할 수 있습니다.


import { watch, ref } from 'vue';

const value = ref(0);
watch(value, (newVal, oldVal) => {
  console.log(`값 변경됨: ${oldVal} → ${newVal}`);
});

라이프사이클 훅

Vue 3에서는 조합형 API를 사용하여 각 라이프사이클 단계를 더 명확하게 처리할 수 있습니다.


import { onMounted, onUnmounted } from 'vue';

onMounted(() => {
  console.log('컴포넌트가 마운트되었습니다.');
});

onUnmounted(() => {
  console.log('컴포넌트가 언마운트되었습니다.');
});

부모-자식 컴포넌트 통신

부모와 자식 컴포넌트 간의 데이터 전달은 props와 emits를 사용하여 처리됩니다.


// 부모 컴포넌트
<ChildComponent :message="parentMessage" @child-event="handleChildEvent" />

// 자식 컴포넌트
defineProps(['message']);
const emit = defineEmits(['child-event']);
emit('child-event', data);

태그: vue3 CompositionAPI TypeScript Vite

7월 11일 05:16에 게시됨