Nuxt 모듈: 이미지, 인증, 다국어
최적화된 이미지를 위해 @nuxt/image를, 인증을 위해 @nuxtjs/auth-next를, 국제화를 위해 @nuxtjs/i18n을 설치하고 구성합니다.
Nuxt 모듈: 이미지, 인증, 다국어은(는) CoddyKit의 무료 Frontend Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Frontend Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Frontend Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
Nuxt 모듈이란?
모듈은 Nuxt의 공식 확장 방식입니다. nuxt.config.ts에 설치하고 빌드, 런타임, 개발 서버에 연결합니다. 생태계의 대부분의 기능은 모듈로 제공됩니다.
모듈 설치
npm으로 모듈을 설치한 다음 nuxt.config.ts의 modules에 추가합니다.
// nuxt.config.ts
export default defineNuxtConfig({
modules: [
'@nuxt/image',
'@sidebase/nuxt-auth',
'@nuxtjs/i18n'
]
});@nuxt/image
<img>를 최적화된 <NuxtImg>로 대체합니다. 형식(WebP/AVIF) 자동 변환, 반응형 srcset, 지연 로딩, CDN 통합을 지원합니다.
<template>
<NuxtImg
src="/photos/sunset.jpg"
alt="Sunset"
width="800"
height="600"
format="webp"
loading="lazy"
sizes="sm:100vw md:50vw lg:800px"
/>
</template>아트 디렉션을 위한 NuxtPicture
<NuxtPicture>는 아트 디렉션을 위해 여러 <source> 태그가 포함된 <picture> 요소를 생성합니다.
<NuxtPicture src="/hero.jpg" alt="" :imgAttrs="{ width: 1200, height: 600 }" />이미지 제공자 구성
CDN 제공자(Cloudinary, imgix, Vercel 등)를 구성하면 모든 이미지가 해당 제공자를 통해 전달됩니다.
export default defineNuxtConfig({
modules: ['@nuxt/image'],
image: {
provider: 'cloudinary',
cloudinary: { baseURL: 'https://res.cloudinary.com/yourname/image/fetch/' }
}
});@sidebase/nuxt-auth(인증)
여러 제공자를 지원하는 인증 모듈입니다. NextAuth 호환 OAuth, 로컬 자격 증명, 사용자 지정 흐름을 지원합니다.
// nuxt.config.ts
export default defineNuxtConfig({
modules: ['@sidebase/nuxt-auth'],
auth: {
baseURL: process.env.AUTH_ORIGIN,
provider: { type: 'authjs' }
}
});페이지에서 인증 사용하기
useAuth() 컴포저블은 세션, 상태, signIn/signOut을 제공합니다.
<script setup>
const { data: session, status, signIn, signOut } = useAuth();
</script>
<template>
<button v-if="status === 'unauthenticated'" @click="signIn('github')">
Sign in with GitHub
</button>
<div v-else>
Welcome, {{ session.user.name }}
<button @click="signOut">Sign out</button>
</div>
</template>미들웨어로 경로 보호하기
페이지에서 인증 미들웨어를 사용하면 인증을 필수로 지정할 수 있습니다.
<script setup>
definePageMeta({ middleware: 'auth' });
</script>@nuxtjs/i18n(국제화)
공식 i18n 모듈은 여러 언어, 로캘 접두사가 붙은 경로, 지연 로드되는 번역 파일, SEO에 적합한 hreflang을 지원합니다.
export default defineNuxtConfig({
modules: ['@nuxtjs/i18n'],
i18n: {
locales: [
{ code: 'en', file: 'en.json' },
{ code: 'tr', file: 'tr.json' }
],
defaultLocale: 'en',
lazy: true,
langDir: 'locales/'
}
});컴포넌트에서 번역하기
템플릿에서는 $t를 사용하고, setup에서는 useI18n을 사용합니다.
<script setup>
const { t, locale } = useI18n();
</script>
<template>
<h1>{{ $t('welcome') }}</h1>
<p>{{ t('greeting', { name: 'Alice' }) }}</p>
<button @click="locale = locale === 'en' ? 'tr' : 'en'">
{{ $t('switch_lang') }}
</button>
</template>로캘 접두사가 붙은 경로
URL이 /en/about, /tr/about과 같은 형태가 됩니다. 올바르게 접두사가 붙은 링크를 생성하려면 localePath('/about')를 사용합니다.
<NuxtLink :to="localePath('/profile')">{{ $t('profile') }}</NuxtLink>그 밖의 인기 모듈
@pinia/nuxt(상태 관리), @vueuse/nuxt(200개 이상의 컴포저블), @nuxtjs/tailwindcss(Tailwind 설정), @nuxtjs/color-mode(어두운 모드), @nuxt/content(파일 기반 CMS).
사용자 지정 모듈 작성하기
내부 모노레포 기능을 위해 Nuxt 수명 주기에 연결되는 모듈을 작성할 수 있습니다. 모듈은 컴포넌트, 런타임 구성, 서버 경로, 빌드 단계를 등록하는 등 강력한 기능을 제공합니다.
빠른 확인
자동 WebP/AVIF 변환과 반응형 srcset을 지원하는 최적화된 이미지 로딩을 제공하는 Nuxt 3 모듈은 무엇인가요?
복습: Nuxt 모듈
모듈은 Nuxt를 확장하며, nuxt.config.ts의 modules 배열을 통해 설치합니다. @nuxt/image는 최적화된 이미지(자동 형식 변환, srcset, 지연 로딩)를 제공합니다. @sidebase/nuxt-auth(또는 nuxt-auth)는 인증에 사용합니다. @nuxtjs/i18n은 번역과 로캘 접두사가 붙은 경로를 제공합니다. 그 밖에도 @pinia/nuxt, @vueuse/nuxt, @nuxtjs/tailwindcss, @nuxt/content가 있습니다. 내부에서 재사용할 기능에는 사용자 지정 모듈을 작성합니다.
자주 묻는 질문
“Nuxt 모듈: 이미지, 인증, 다국어” 강의는 무료인가요?
네 — “Nuxt 모듈: 이미지, 인증, 다국어” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Frontend Academy 강의 전체를 잠금 해제할 수 있습니다. Frontend Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“Nuxt 모듈: 이미지, 인증, 다국어”에서 뭘 배우나요?
최적화된 이미지를 위해 @nuxt/image를, 인증을 위해 @nuxtjs/auth-next를, 국제화를 위해 @nuxtjs/i18n을 설치하고 구성합니다. 브라우저에서 직접 실행하는 실습 코드로 Frontend Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Frontend Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Frontend Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.
“Nuxt 모듈: 이미지, 인증, 다국어” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Frontend Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Frontend Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 파일 기반 라우팅과 자동 가져오기
- useFetch와 useAsyncData
- Nuxt 모듈: 이미지, 인증, 다국어
- 배포: 정적 사이트와 SSR 비교