안녕하세요, 코딩하는곰입니다! 오늘은 Vue 3의 혁신적인 기능인 Composition API에 대해 깊이 있게 알아보려고 합니다. 20년 넘게 Vue.js를 다루어 온 저의 경험을 바탕으로, Composition API가 기존 Options API와 어떻게 다른지, 왜 함수 기반 구조가 더 효율적인지 실제 코드 예제와 함께 상세히 설명드리겠습니다. Vue 개발자라면 꼭 알아야 할 이 핵심 기능을 지금 바로 배워보세요!
Vue 3에서 도입된 Composition API는 대규모 애플리케이션을 위한 코드 조직화에 혁신을 가져왔습니다. 기존 Options API에서는 data, methods, computed 등이 각각의 옵션 블록에 분산되어 있어 관련 로직이 흩어지는 문제가 있었죠.
Composition API는 관심사(로직) 중심으로 코드를 구성할 수 있게 해줍니다. 예를 들어 사용자 인증과 데이터 페칭이라는 두 가지 기능이 있다면, 각 기능과 관련된 모든 코드(setup, 반응형 변수, 메서드 등)를 하나의 함수로 묶을 수 있습니다.
// 사용자 인증 로직을 한데 모은 예제function useAuth() {const user = ref(null);const login = async (id, pw) => { /* 로직 */ };const logout = () => { /* 로직 */ };return { user, login, logout };}
이렇게 모듈화된 코드는 가독성이 뛰어날 뿐 아니라, 다른 컴포넌트에서도 쉽게 재사용할 수 있습니다. 또한 TypeScript와의 통합이 훨씬 자연스러워진 점도 큰 장점이죠.
📊 데이터 분석과 프로그래밍에 관심이 있다면, (자바 기초) 배열(Array)과 리스트(List)의 차이점 완벽 가이드 - 선택 기준과 활용법를 참고해보세요.
Composition API의 핵심은 반응형 데이터 생성 함수입니다. ref는 기본 타입(숫자, 문자열 등)에 사용하며, .value로 접근합니다. 반면 reactive는 객체에 사용하며 프록시 객체를 반환합니다.
import { ref, reactive } from 'vue';export default {setup() {const count = ref(0); // 숫자형 반응형 데이터const state = reactive({ // 객체형 반응형 데이터name: '곰돌이',age: 20});function increment() {count.value++; // ref는 .value 필요state.age++; // reactive는 직접 접근}return { count, state, increment };}}
setup 함수는 Composition API의 핵심으로, 컴포넌트 생성 전에 실행됩니다. 여기서 반환하는 모든 것은 템플릿에서 사용 가능합니다. 라이프사이클 훅도 onMounted, onUpdated 같은 형태로 사용할 수 있어 더 직관적이죠.
매일 두뇌 훈련을 위한 스도쿠를 풀고 싶다면, 클래식과 스토리 모드를 모두 제공하는 스도쿠 저니를 다운로드하세요.
watch와 watchEffect를 이용하면 반응형 데이터의 변화를 감지할 수 있습니다. 특히 watchEffect는 종속성을 자동으로 추적하여 코드를 간결하게 만듭니다.
import { watchEffect, ref } from 'vue';const searchQuery = ref('');const searchResults = ref([]);watchEffect(async () => {if (searchQuery.value === '') return;searchResults.value = await fetchResults(searchQuery.value);});
로직 재사용을 위한 Composable 함수는 Composition API의 꽃입니다. 아래는 마우스 위치 추적을 Composable로 구현한 예제입니다.
// useMouse.jsimport { ref, onMounted, onUnmounted } from 'vue';export function useMouse() {const x = ref(0);const y = ref(0);function update(e) {x.value = e.pageX;y.value = e.pageY;}onMounted(() => window.addEventListener('mousemove', update));onUnmounted(() => window.removeEventListener('mousemove', update));return { x, y };}
이렇게 작성한 함수는 어떤 컴포넌트에서나 const { x, y } = useMouse();로 간편하게 사용할 수 있습니다.
🖼️ 이번 주 주목할 만한 공연·전시 소식은, 한여름밤의 축제를 참고해보세요.
지금까지 Vue 3 Composition API의 핵심 기능들을 살펴보았습니다. 함수 기반 구조가 어떻게 더 나은 코드 조직화와 재사용성을 제공하는지 이해되셨나요? 이 글의 모든 예제는 제 블로그의 GitHub 저장소에서 확인하실 수 있습니다. 다음 시간에는 Composition API와 Pinia를 활용한 상태 관리 패턴에 대해 깊이 있게 다루겠습니다. 질문이 있으시면 댓글로 남겨주세요! 코딩하는곰이었습니다. 🐾
치매 예방과 기억력 향상을 위한 스도쿠 게임이 필요하다면, 크립토 할아버지와 함께하는 스도쿠 저니를 추천합니다.
