2. Nuxt 에 대한 학습 내용

 


7단계: Nuxt의 데이터 페칭

Nuxt는 데이터 페칭을 간단하고 강력하게 처리할 수 있는 내장 메서드를 제공합니다.

1. useFetch

useFetch는 클라이언트와 서버에서 데이터를 가져올 수 있는 API입니다.

사용 예제

Post: {{ post.title }}

{{ post.body }}

const { data: post } = await useFetch('<a href=https://jsonplaceholder.typicode.com/posts/1');>https://jsonplaceholder.typicode.com/posts/1');</a>
  • 장점:
    • 서버에서 데이터를 가져오면 페이지 로드 시 데이터가 포함된 HTML이 렌더링되어 SEO와 초기 로딩 속도에 유리.
    • 클라이언트에서 실행하면 동적 데이터도 처리 가능.

2. useAsyncData

useAsyncData는 페이지 또는 컴포넌트에서 데이터를 비동기로 가져오는 데 사용됩니다.

사용 예제

User: {{ user.name }}

{{ user.email }}

const { data: user } = await useAsyncData('user', () =>
  $fetch('<a href=https://jsonplaceholder.typicode.com/users/1')>https://jsonplaceholder.typicode.com/users/1')</a>
);
  • 차이점: useFetch와 비슷하지만, useAsyncData는 Nuxt 페이지 수준에서 데이터를 로드하는 데 최적화되어 있음.

8단계: Nuxt Content 모듈로 마크다운 관리

1. Nuxt Content 모듈 설치

npm install @nuxt/content

2. 마크다운 파일 생성

content/ 디렉토리를 만들어 마크다운 파일을 저장합니다.

content/
├── blog/
│   ├── first-post.md
│   ├── second-post.md

first-post.md

---
title: "My First Post"
description: "This is my first blog post with Nuxt Content"
---

# Welcome to my blog!

This is some content written in Markdown.

3. 마크다운 데이터를 페이지에 렌더링

<template>
  <div>
    <h1>{{ document.title }}</h1>
    <div v-html="document.body" />
  </div>
</template>

<script setup>
const { data: document } = await useContent('blog/first-post').fetch();
</script>

9단계: Nuxt 레이아웃 시스템

Nuxt는 페이지에 공통으로 적용할 레이아웃을 관리하기 쉽게 만들어 줍니다.

1. 기본 레이아웃

layouts/default.vue

<template>
  <div>
    <header>Header</header>
    <main>
      <slot />
    </main>
    <footer>Footer</footer>
  </div>
</template>

<script setup>
</script>
  • 모든 페이지는 기본적으로 default.vue 레이아웃을 사용합니다.

2. 사용자 정의 레이아웃

  • 특정 페이지에만 적용되는 레이아웃을 만들 수도 있습니다.

layouts/auth.vue

<template>
  <div class="auth-layout">
    <slot />
  </div>
</template>

<style scoped>
.auth-layout {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 100vh;
}
</style>
  • 페이지에서 레이아웃 설정:
<script setup>
definePageMeta({
  layout: 'auth',
});
</script>

10단계: 다크 모드 구현

Nuxt는 TailwindCSS와 함께 다크 모드를 간단히 구현할 수 있습니다.

1. TailwindCSS 설치

npm install @nuxtjs/tailwindcss

nuxt.config.ts:

export default defineNuxtConfig({
  modules: ['@nuxtjs/tailwindcss'],
  tailwindcss: {
    configPath: './tailwind.config.js',
  },
});

2. TailwindCSS 다크 모드 설정

tailwind.config.js:

module.exports = {
  darkMode: 'class', // 다크 모드 설정
  theme: {
    extend: {},
  },
};

3. 다크 모드 구현

컴포넌트 예제

<template>
  <div :class="{ dark: isDarkMode }">
    <button @click="toggleDarkMode">Toggle Dark Mode</button>
  </div>
</template>

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

const isDarkMode = ref(false);
const toggleDarkMode = () => {
  isDarkMode.value = !isDarkMode.value;
};
</script>

<style scoped>
.dark {
  background-color: black;
  color: white;
}
</style>

11단계: Nuxt 모듈 및 플러그인

Nuxt는 플러그인을 통해 외부 라이브러리와의 통합을 간단히 처리합니다.

1. PrimeVue 통합

PrimeVue 설치

npm install primevue primeicons

플러그인 등록

plugins/primevue.js:

import PrimeVue from 'primevue/config';
import { defineNuxtPlugin } from '#app';

export default defineNuxtPlugin((nuxtApp) => {
  nuxtApp.vueApp.use(PrimeVue);
});

 

'개발 > vue' 카테고리의 다른 글

4. Nuxt 에 대한 학습 내용  (0) 2024.12.20
3. Nuxt 에 대한 학습 내용  (2) 2024.12.20
1. Nuxt 에 대한 학습 내용  (0) 2024.12.20
React vs Vue, Quasar, VitePress, naive ui  (2) 2024.10.25