12단계: Nuxt 미들웨어
Nuxt는 middleware 디렉토리를 통해 라우팅과 상태 관리를 쉽게 제어할 수 있습니다.
1. 미들웨어란?
- 미들웨어는 특정 페이지에 접근하기 전에 실행되는 코드입니다.
- 인증, 로깅, 리다이렉션 등을 처리할 때 유용합니다.
2. 글로벌 미들웨어
- 모든 페이지에 적용되는 미들웨어.
예제: 글로벌 미들웨어
- middleware/logger.global.js 생성:
export default defineNuxtMiddleware((to, from) => {
console.log(`Navigating from ${from.fullPath} to ${to.fullPath}`);
});
- nuxt.config.ts에서 등록:
export default defineNuxtConfig({
router: {
middleware: 'logger.global',
},
});
3. 특정 페이지에 미들웨어 적용
- middleware/auth.js 생성:
export default defineNuxtMiddleware((to) => {
const isAuthenticated = false; // 예시: 인증 상태 확인
if (!isAuthenticated && to.path !== '/login') {
return navigateTo('/login');
}
});
- 페이지에서 적용:
<script setup>
definePageMeta({
middleware: 'auth',
});
</script>
13단계: Nuxt 에코시스템 활용
Nuxt는 다양한 모듈과 플러그인을 지원하여 기능 확장을 간단히 처리할 수 있습니다.
1. @nuxtjs/axios
Nuxt 프로젝트에서 HTTP 요청을 쉽게 처리하기 위한 모듈입니다.
설치
npm install @nuxtjs/axios
설정
nuxt.config.ts:
export default defineNuxtConfig({
modules: ['@nuxtjs/axios'],
axios: {
baseURL: 'https://jsonplaceholder.typicode.com',
},
});
사용
<script setup>
const { data: posts } = await useAsyncData('posts', () => $axios.get('/posts'));
</script>
<template>
<div v-for="post in posts" :key="post.id">
<h3>{{ post.title }}</h3>
<p>{{ post.body }}</p>
</div>
</template>
2. @nuxt/image
이미지 최적화를 간단히 처리합니다.
설치
npm install @nuxt/image
설정
nuxt.config.ts:
export default defineNuxtConfig({
modules: ['@nuxt/image'],
image: {
domains: ['example.com'], // 허용된 이미지 도메인
},
});
사용
14단계: Nuxt의 SEO와 메타 관리
SEO는 Nuxt의 강력한 기능 중 하나입니다. 페이지별로 SEO 메타 태그를 간단히 관리할 수 있습니다.
1. 글로벌 SEO 설정
nuxt.config.ts:
export default defineNuxtConfig({
app: {
head: {
title: 'Nuxt Application',
meta: [
{ name: 'description', content: 'A Nuxt.js project with SEO support' },
{ name: 'viewport', content: 'width=device-width, initial-scale=1' },
],
},
},
});
2. 페이지별 SEO
페이지에서 definePageMeta를 사용해 개별적으로 설정 가능합니다.
예제
<script setup>
definePageMeta({
title: 'About Us',
meta: [
{ name: 'description', content: 'Learn more about us' },
{ property: 'og:title', content: 'About Us' },
],
});
</script>
15단계: 전역 상태 관리
Nuxt 프로젝트에서 Pinia 또는 Vuex를 사용해 전역 상태를 관리할 수 있습니다.
1. Pinia 설치 및 설정
설치
npm install pinia
Pinia 스토어 생성
store/counter.ts:
import { defineStore } from 'pinia';
export const useCounterStore = defineStore('counter', {
state: () => ({
count: 0,
}),
actions: {
increment() {
this.count++;
},
},
});
사용
<script setup>
import { useCounterStore } from '@/store/counter';
const counterStore = useCounterStore();
</script>
<template>
<div>
<p>Count: {{ counterStore.count }}</p>
<button @click="counterStore.increment">Increment</button>
</div>
</template>
16단계: Nuxt 프로젝트 배포
Nuxt는 다양한 배포 옵션을 제공합니다.
1. 정적 사이트 생성 (SSG)
npm run build
npm run generate
2. 서버 배포 (SSR)
- npm run build 후 Node.js 서버에서 실행:
npm run start
'개발 > vue' 카테고리의 다른 글
4. Nuxt 에 대한 학습 내용 (0) | 2024.12.20 |
---|---|
2. Nuxt 에 대한 학습 내용 (0) | 2024.12.20 |
1. Nuxt 에 대한 학습 내용 (0) | 2024.12.20 |
React vs Vue, Quasar, VitePress, naive ui (2) | 2024.10.25 |