minstudio

강력한 Auto-imports와 Composables 활용

Nuxt의 가장 큰 마법 중 하나는 Auto-imports(자동 임포트)입니다. composables/utils/ 폴더에 파일을 생성하고 함수를 export하기만 하면, 애플리케이션 어디에서든 import 문 없이 즉시 사용할 수 있습니다.

이 기능은 Vue의 ref, computed 같은 내장 함수뿐만 아니라 여러분이 직접 만든 커스텀 함수에도 동일하게 적용되어, 코드 상단의 지저분한 import 선언문들을 완전히 제거해 줍니다.

✨ Auto-imports: Import 없는 마법의 공급망 composables/ 📄 useAuth.ts 📄 useMouse.ts (상태 기반 로직) utils/ 📄 formatDate.ts (순수 유틸 함수) Nuxt 엔진 자동 수집 및 배급 ⚙️ app.vue import { ref } from 'vue' import { useMouse } const x = ref(0) const auth = useAuth() formatDate(new Date()) Import 100% 생략!
<!-- ==========================================
// 📂 composables/useMouse.ts
// 파일명이 카멜케이스이면 함수명과 일치시키는 것이 좋습니다.
// ========================================== -->
<script>
// 외부 라이브러리의 컴포저블을 래핑할 때도 유용합니다.
export const useMouse = () => {
  // ref, onMounted, onUnmounted 도 별도 import 없이 바로 사용 가능!
  const x = ref(0)
  const y = ref(0)

  function update(event) {
    x.value = event.pageX
    y.value = event.pageY
  }

  onMounted(() => window.addEventListener('mousemove', update))
  onUnmounted(() => window.removeEventListener('mousemove', update))

  return { x, y }
}
</script>

<!-- ==========================================
// 📂 app.vue (최상위 컴포넌트)
// ========================================== -->
<script>
<template>
  <div class="p-8">
    <h1 class="text-2xl font-bold mb-4">마우스 위치 추적기</h1>
    
    <!-- useMouse에서 반환된 반응형 상태를 바로 바인딩 -->
    <p class="text-xl">X: <span class="text-emerald-500">{{ x }}</span></p>
    <p class="text-xl">Y: <span class="text-emerald-500">{{ y }}</span></p>
  </div>
</template>

<script setup>
// 💡 마법: import { ref } from 'vue' 도 없고, 
// import { useMouse } from '~/composables/useMouse' 도 없습니다!
// Nuxt가 빌드 시점에 자동으로 추적하여 연결해 줍니다.
const { x, y } = useMouse()
</script>
</script>
강력한 Auto-imports와 Composables 활용 | Minstudio