서버
Nitro로 구동됨
Nuxt의 서버는 Nitro입니다. 원래 Nuxt를 위해 만들어졌지만, 이제는 UnJS의 일부가 되어 다른 프레임워크에서도 사용할 수 있으며, 단독으로도 사용할 수 있습니다.
Nitro를 사용하면 Nuxt는 슈퍼파워를 얻게 됩니다:
- 앱의 서버 측 부분에 대한 완전한 제어
- 모든 제공업체에서의 범용 배포(많은 경우 무설정)
- 하이브리드 렌더링
Nitro는 내부적으로 h3를 사용합니다. h3는 고성능과 이식성을 위해 만들어진 최소한의 H(TTP) 프레임워크입니다.
서버 엔드포인트 & 미들웨어
API 엔드포인트부터 미들웨어까지, Nuxt 앱의 서버 전용 부분을 쉽게 관리할 수 있습니다.
엔드포인트와 미들웨어 모두 다음과 같이 정의할 수 있습니다:
export default defineEventHandler(async (event) => {
// ... 여기서 원하는 작업을 수행하세요
})
그리고 text, json, html 또는 stream까지 직접 반환할 수 있습니다.
기본적으로, Nuxt 애플리케이션의 다른 부분과 마찬가지로 핫 모듈 교체와 자동 임포트를 지원합니다.
범용 배포
Nitro는 베어메탈 서버부터 엣지 네트워크까지, Nuxt 앱을 어디든 배포할 수 있는 기능을 제공합니다. 시작 시간은 단 몇 밀리초에 불과합니다. 정말 빠릅니다!
15개 이상의 프리셋을 통해 다양한 클라우드 제공업체와 서버에 Nuxt 앱을 빌드할 수 있습니다. 예를 들면:
또는 다른 런타임을 위해:
하이브리드 렌더링
Nitro에는 routeRules라는 강력한 기능이 있습니다. 이를 통해 Nuxt 앱의 각 라우트가 렌더링되는 방식을(그리고 그 이상을) 커스터마이즈할 수 있는 규칙 집합을 정의할 수 있습니다.
export default defineNuxtConfig({
routeRules: {
// SEO 목적을 위해 빌드 시 생성됨
'/': { prerender: true },
// 1시간 동안 캐시됨
'/api/*': { cache: { maxAge: 60 * 60 } },
// 404 방지를 위한 리디렉션
'/old-page': {
redirect: { to: '/new-page', statusCode: 302 }
}
// ...
}
})
또한, 일부 라우트 규칙(ssr, appMiddleware, noScripts 등)은 Nuxt에 특화되어 페이지를 HTML로 렌더링할 때 동작을 변경합니다.
일부 라우트 규칙(appMiddleware, redirect, prerender)은 클라이언트 측 동작에도 영향을 미칩니다.
Nitro는 서버 사이드 렌더링뿐만 아니라 프리렌더링을 위해 앱을 빌드하는 데 사용됩니다.