Vue.js 심화 2탄 34강: 필요할 때만 나타나요! 마법의 예고편 (Async Components)

안녕하세요! 가족과 함께하는 스마트 라이프입니다. 지난 시간에 재료가 올 때까지 친절하게 기다려주는 Suspense 마법을 배웠죠? 오늘은 그 마법을 더 똑똑하게 써먹는 방법을 배울 거예요. 웹사이트가 처음 시작할 때 모든 방을 한꺼번에 다 지으려면 시간이 너무 오래 걸려요. 그래서 평소에는 숨겨두었다가, 우리가 버튼을 누르는 순간에만 짠! 하고 나타나게 하는 비동기 컴포넌트(Async Components) 마법을 배워볼게요!

Vue.js 심화 2탄 34강: 필요할 때만 나타나요! 마법의 예고편 (Async Components)

1. 비동기 컴포넌트: 가벼운 여행 가방 만들기

비동기 컴포넌트는 여행을 갈 때 모든 옷을 입고 가는 게 아니라, 가방에 넣어두었다가 호텔에 도착해서 필요할 때만 꺼내 입는 것과 같아요.

웹사이트도 처음 문을 열 때는 거실(메인 화면)만 보여주고, ‘수영장’이나 ‘비밀의 방’ 같은 곳은 우리가 가고 싶을 때만 인터넷에서 다운로드해서 지어주는 거예요. 덕분에 우리 성은 아주 가볍고 빠르게 문을 열 수 있답니다.

2. 마법 주문: defineAsyncComponent

이 마법을 부리려면 defineAsyncComponent라는 특수한 주문을 외워야 해요.

  • 일반 컴포넌트: “미리 다 지어놔!” (처음부터 무거워요)
  • 비동기 컴포넌트: “필요하다고 할 때 그때 가져와!” (처음엔 아주 가벼워요)

3. 실전 마법: 버튼을 눌러야 나타나는 비밀방

평소엔 없다가 버튼을 누를 때만 마법처럼 나타나는 코드를 짜볼까요?

<script setup>
import { defineAsyncComponent, ref } from 'vue';

// 1. 비밀방 마법을 미리 예약해둬요 (비동기 로딩)
const SecretRoom = defineAsyncComponent(() => 
  import('./components/SecretRoom.vue')
);

const isShow = ref(false);
</script>

<template>
  <div>
    <button @click="isShow = true">비밀방 문 열기!</button>
    
    <!-- 버튼을 누르기 전까지는 SecretRoom 코드는 우리 컴퓨터에 없어요! -->
    <SecretRoom v-if="isShow" />
  </div>
</template>
Vue.js 심화 2탄 34강: 필요할 때만 나타나요! 마법의 예고편 (Async Components)

4. 스마트 라이프를 위한 가족 코딩 팁

아이들에게 ‘접이식 자전거’에 비유해 주세요. 탈 때는 펼쳐서 쓰지만, 보관할 때는 작게 접어두는 것처럼 코딩도 효율적으로 관리해야 한다는 걸요. 아이와 함께 만든 ‘에듀패드’에서 용량이 큰 ‘동영상 강의실’이나 ‘복잡한 게임방’은 이 마법을 써서 필요할 때만 불러오도록 설정해 보세요. 앱이 훨씬 가벼워져서 아이도 더 즐겁게 공부할 수 있을 거예요.

마치며: 다이어트에 성공한 마법 성

이제 여러분은 웹사이트의 무게를 자유자재로 조절하는 고수 마법사가 되었습니다! 정말 대단해요. 다음 시간에는 **’마법의 돋보기(Provide & Inject)’**라는 주제로, 아주 깊숙한 곳에 있는 방까지 한 번에 선물을 전달하는 특별한 배달법을 배워볼게요! 내일 아침 9시에 만나요!