[ Frontend ]/Vue.js & Nuxt.js

[Nuxt3] Nuxt가 제공하는 페이지 이동 컴포넌트 <NuxtLink>

2025. 3. 11. 13:29
목차
  1. NuxtLink 개요
  2. 내부 라우팅
  3. 외부 라우팅
  4. Link 버튼 예제
  5. NuxtLink 사용 시의 이점
  6.  <NuxtLink>가 제공하는 최적화 정리
  7. Prefetching 
  8. Prefetching options
  9. :prefetch="false"

NuxtLink 개요


<NuxtLink>는 Vue Router의 <RouterLink>와 html의 <a> 태그를 모두 대체하는 Nuxt3의 내장 컴포넌트이다.

내부 링크와 외부 링크를 자동으로 구분하고, 최적화를 사용하여 링크를 렌더링 한다.

  • NuxtLink는 내부 링크인지 외부 링크인지 자동으로 감지하고 적절한 방식으로 처리합니다.
  • 내부 링크 (/main 같은 경로)는 Vue Router를 사용해 클라이언트 사이드 내비게이션을 수행합니다.
  • 외부 링크 (https://example.com)는 일반적인 <a> 태그로 렌더링 됩니다.

내부 라우팅

이렇게 내부 경로의 /main으로 설정되어 있는 경우, 내부의 다른 페이지에 연결한다.

<template>
  <NuxtLink to="/main">
    Main Page
  </NuxtLink>
</template>

외부 라우팅

이렇게 외부 경로 url이 설정되어있는 경우, 외부 웹사이트에 연결한다.

<template>
  <NuxtLink to="https://nuxtjs.org">
    Nuxt Docs
  </NuxtLink>
</template>

Link 버튼 예제

버튼 클릭 시 NuxtLink의 navigate 함수를 호출하도록 한다.

<NuxtLink v-slot="{ navigate }" custom to="/main">
	<q-btn stretch flat label="Main" no-caps @click="navigate()" />
</NuxtLink>

 


NuxtLink 사용 시의 이점


 <NuxtLink>가 제공하는 최적화 정리

1️⃣ 내부/외부 링크 자동 구분

  • 내부 링크 → Vue Router를 사용한 클라이언트 사이드 내비게이션
  • 외부 링크 → 일반 <a> 태그로 렌더링

2️⃣ 프리페칭(미리 로딩)

  • 화면에 나타나기 전에 링크된 페이지를 미리 가져와 로딩 속도를 향상한다.
  • 기본적으로 활성화하고, 필요하면 :prefetch="false"로 비활성화할 수 있다.
<NuxtLink to="/main" :prefetch="false">메인 페이지</NuxtLink>

 

3️⃣ 최적화된 렌더링

  • 사용자가 방문할 가능성이 높은 링크를 효율적으로 처리하여 성능을 개선한다.
  • 사용자가 마우스를 올리거나, 특정 페이지에서 자주 방문하는 경로를 분석하여 적절히 프리페칭한다.

4️⃣ 자동 rel="noopener noreferrer" 적용

  • 보안 및 성능을 고려하여 target="_blank"인 경우 rel 옵션을 자동으로 추가한다.

5️⃣ 클라이언트 내비게이션 최적화

  • 페이지 전체 새로고침 없이 빠르게 전환하여 UX 개선

Prefetching 

NuxtLink가 제공하는 기능 중 사용자 경험을 향상시키는 데에 가장 중요한 프리페칭에 대해서 알아보자.

 

Prefetching은 사용자가 페이지를 방문하기 전에 필요한 리소스를 미리 로드하여 로딩 속도를 최적화하는 기술이다.

이를 통해 페이지 전환이 훨씬 빠르게 이루어지며, 사용자 경험(UX)이 향상된다.

<NuxtLink to="/main">메인 페이지</NuxtLink>

위와 같이 NuxtLink를 통해 내부 페이지로 이동하는 링크가 있다.

사용자가 이 링크를 클릭하기 전에 Nuxt가 관련 리소스를 미리 가져오고, 페이지 전환 시 즉시 로딩되기 때문에 사용자 경험이 향상된다.

 

  • <NuxtLink>를 사용한 경우: 사용자가 클릭 이벤트를 발생시키기 전에 미리 리소스를 가져와서 로드해 둔다.
  • <NuxtLink>를 사용하지 않은 경우: 사용자가 클릭 이벤트를 발생시켜 페이지 이동 시에 리소스를 가져온다.

Prefetching options

no-prefetching

프리페칭을 원하지 않는 경우

<NuxtLink no-prefetch to="/main">메인 페이지</NuxtLink>

 

:prefetch="false"

프리페칭을 원하지 않는 경우 2

<NuxtLink :prefetch="false" to="/main">메인 페이지</NuxtLink>

 

prefetched-class

프리페칭이 되었을 때, 특정 클래스를 추가하고 싶은 경우

<NuxtLink prefetched-class="some-css"to="/main">메인 페이지</NuxtLink>
반응형
저작자표시 (새창열림)

'[ Frontend ] > Vue.js & Nuxt.js' 카테고리의 다른 글

[Nuxt3] 사용자 정의 페이지 메타 함수 definePageMeta()  (0) 2025.03.11
[Nuxt3] Props 선언 및 사용  (0) 2025.03.10
[Nuxt3] 개발환경 구성 Get started  (0) 2025.03.08
[Vue.js] Vue cli로 Vue.js 프로젝트 생성하기  (0) 2024.08.12
[Vue.js] 기본 문법 알아보기 / Vue 인스턴스, 컴포넌트 / Vue 디렉티브  (0) 2024.08.12
  1. NuxtLink 개요
  2. 내부 라우팅
  3. 외부 라우팅
  4. Link 버튼 예제
  5. NuxtLink 사용 시의 이점
  6.  <NuxtLink>가 제공하는 최적화 정리
  7. Prefetching 
  8. Prefetching options
  9. :prefetch="false"
'[ Frontend ]/Vue.js & Nuxt.js' 카테고리의 다른 글
  • [Nuxt3] 사용자 정의 페이지 메타 함수 definePageMeta()
  • [Nuxt3] Props 선언 및 사용
  • [Nuxt3] 개발환경 구성 Get started
  • [Vue.js] Vue cli로 Vue.js 프로젝트 생성하기
HSRyuuu
HSRyuuu
Web Backend Developer happyhsryu
HSRyuuu
HS_dev_log
HSRyuuu
전체
오늘
어제
  • 전체 글 보기 (231)
    • Java (24)
    • Spring (25)
    • JPA & QueryDSL (13)
    • Database (17)
    • 자료구조 & 알고리즘 (30)
    • DevOps (10)
    • [ Computer Science ] (47)
      • Web & Network (14)
      • 프로그래밍 이론 (11)
      • 운영체제 (3)
      • 데이터베이스 이론 (5)
      • Linux 리눅스 (7)
    • [ Frontend ] (17)
      • Vue.js & Nuxt.js (9)
      • JSP_Thymeleaf (7)
    • [ 기타 ] (48)
      • 오픈소스 라이브러리 (5)
      • 코딩테스트 (13)
      • Trouble Shooting (7)
      • Tech Interview (6)
      • Book Review (9)
      • 끄적끄적... (6)
      • 개인 프로젝트 (2)

블로그 메뉴

  • 홈
  • 태그
  • github

공지사항

  • GitHub
  • 공부한 내용을 정리하고 기록하는 블로그 입니다.

인기 글

태그

  • 개발자
  • SQL
  • vue3
  • Redis
  • 백엔드공부
  • 제로베이스
  • 자료구조
  • 리눅스
  • 트랜잭션
  • web
  • Database
  • 백엔드스쿨
  • springsecurity
  • mybatis
  • Java
  • JPA
  • SpringBoot
  • 백엔드기술면접
  • 기술면접
  • 클린코드
  • TechInterview
  • Nuxt3
  • Redisson
  • HTTP
  • Linux
  • cleancode
  • 백준
  • Spring
  • MySQL
  • 백엔드

최근 댓글

최근 글

hELLO · Designed By 정상우.
HSRyuuu
[Nuxt3] Nuxt가 제공하는 페이지 이동 컴포넌트 <NuxtLink>
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.