본문 바로가기
카테고리 없음

Nuxt 3 라우팅 완전정복

by 투게더리 2025. 4. 14.
반응형

vue-router 설정 안 해도 되는 신세계, 자동 라우팅 시스템

Nuxt 3를 처음 시작하면 가장 감탄하게 되는 기능 중 하나가 바로
**"파일 기반 자동 라우팅"**입니다.

Vue에서는 vue-router를 직접 설치하고, routes 배열을 수동으로 관리해야 했죠.
하지만 Nuxt에서는 그냥 pages/ 폴더에 .vue 파일만 만들면 끝이에요!


📁 기본 페이지 생성

bash
복사편집
/pages/index.vue /pages/about.vue /pages/contact.vue

위처럼 파일을 만들면 아래처럼 자동으로 라우트가 생성돼요:

파일명라우트 주소
index.vue /
about.vue /about
contact.vue /contact

👆 이게 Nuxt의 자동 라우팅 시스템이에요.


⚙️ 실제 예시: about.vue

vue
복사편집
<template> <div> <h1>About 페이지입니다</h1> </div> </template>

Nuxt는 이 파일을 읽고 자동으로 /about 경로를 만들어줘요.
vue-router 설정? 따로 할 필요 없어요.


🧩 동적 라우트 만들기

동적으로 변경되는 URL은 대괄호를 사용해서 정의해요.

bash
복사편집
/pages/users/[id].vue

예를 들어:

  • /users/1 → id = 1
  • /users/abc123 → id = abc123
ts
복사편집
<script setup> const route = useRoute() const userId = route.params.id </script>

🧱 중첩 라우트 구성

Nuxt는 디렉토리 구조가 곧 라우트 구조에요.
아래처럼 구성하면:

swift
복사편집
/pages/blog/index.vue → /blog /pages/blog/[slug].vue → /blog/-slug /pages/blog/write/index.vue /blog/write

라우팅 코드를 따로 짜지 않아도
URL 구조를 디렉토리로 설계할 수 있어서 직관적이에요.


🪤 Catch-all 라우트

전체 경로를 하나로 받는 Catch-all 라우트는 [...slug].vue를 사용합니다.

bash
복사편집
/pages/docs/[...slug].vue

이 경우 /docs/nuxt/3/start 같은 다단계 URL도 모두 이 파일 하나로 처리할 수 있어요.

ts
복사편집
<script setup> const route = useRoute() console.log(route.params.slug) // ['nuxt', '3', 'start'] </script>

🧠 라우트 메타 정보 설정 (definePageMeta)

Nuxt에서는 페이지마다 메타 정보를 간단히 설정할 수 있어요.

ts
복사편집
<script setup> definePageMeta({ layout: 'default', middleware: 'auth', title: 'About 페이지', }) </script>

SEO에 중요한 title도 여기서 지정할 수 있습니다.


🔗 Nuxt 전용 링크: <NuxtLink>

Nuxt에서는 router-link 대신 **<NuxtLink>**를 사용합니다.

vue
복사편집
<NuxtLink to="/about">소개 페이지로 이동</NuxtLink>

자동 프리페치(prefetch)도 지원해서 페이지 전환이 부드럽고 빠릅니다.


🧹 정리

기능Nuxt 방식Vue 방식
라우트 설정 파일 기반 자동 생성 routes 배열 직접 정의
동적 라우트 [id].vue path: '/:id'
중첩 라우트 폴더 구조로 구성 children 속성 사용
링크 <NuxtLink> <router-link>
페이지 메타 definePageMeta() <meta> 태그 직접 조작

✍️ 마무리

Vue에서 복잡했던 라우팅 설정이
Nuxt 3에서는 파일만 잘 배치하면 자동으로 동작해요.

라우팅만으로도 Nuxt를 쓰는 이유가 충분하죠.

👉 다음 글에서는 SEO 설정에 대해 다뤄볼게요.
자동 생성된 페이지의 메타태그를 어떻게 설정하면 검색에 잘 노출될 수 있을까요?

반응형

댓글