서버 엔진

Nuxt는 새로운 서버 엔진 Nitro로 구동됩니다.

Nuxt를 개발하면서 우리는 새로운 서버 엔진인 Nitro를 만들었습니다.

Nitro에는 다음과 같은 많은 기능이 포함되어 있습니다:

  • Node.js, 브라우저, 서비스 워커 등 다양한 플랫폼에 대한 크로스 플랫폼 지원
  • 기본 제공 서버리스 지원
  • API 라우트 지원
  • 자동 코드 분할 및 비동기 로드 청크
  • 정적 + 서버리스 사이트를 위한 하이브리드 모드
  • 핫 모듈 리로딩이 가능한 개발 서버

API Layer

서버 API 엔드포인트미들웨어는 내부적으로 h3를 사용하는 Nitro에 의해 추가됩니다.

주요 기능은 다음과 같습니다:

  • 핸들러가 객체/배열을 직접 반환하면 자동으로 JSON 응답으로 처리
  • 핸들러가 프로미스를 반환할 수 있으며, 이는 대기됩니다 (res.end()next()도 지원)
  • 바디 파싱, 쿠키 처리, 리다이렉트, 헤더 등 다양한 작업을 위한 헬퍼 함수 제공

자세한 내용은 h3 문서를 확인하세요.

server/ 디렉터리의 API 레이어에 대해 더 알아보세요.

Direct API Calls

Nitro는 전역으로 사용 가능한 $fetch 헬퍼를 통해 라우트를 '직접' 호출할 수 있게 해줍니다. 브라우저에서 실행될 경우 서버로 API 호출을 수행하지만, 서버에서 실행될 경우 관련 함수를 직접 호출하여 추가 API 호출을 절약합니다.

$fetch API는 ofetch를 사용하며, 주요 기능은 다음과 같습니다:

  • JSON 응답의 자동 파싱 (필요 시 원시 응답에도 접근 가능)
  • 요청 바디와 파라미터를 자동으로 처리하며, 올바른 Content-Type 헤더를 설정

$fetch 기능에 대한 더 많은 정보는 ofetch를 참고하세요.

Typed API Routes

API 라우트(또는 미들웨어)를 사용할 때, 응답을 보내기 위해 res.end()를 사용하는 대신 값을 반환하기만 하면 Nitro가 해당 라우트에 대한 타입 정의를 생성합니다.

이 타입들은 $fetch() 또는 useFetch()를 사용할 때 접근할 수 있습니다.

Standalone Server

Nitro는 node_modules에 의존하지 않는 독립 실행형 서버 dist를 생성합니다.

Nuxt 2의 서버는 독립 실행형이 아니며, nuxt-start 또는 nuxt 배포판으로 nuxt start를 실행하거나 커스텀 프로그래매틱 사용을 통해 Nuxt 코어의 일부가 관여해야 합니다. 이는 취약하고 쉽게 깨질 수 있으며, 서버리스 및 서비스 워커 환경에는 적합하지 않습니다.

Nuxt는 nuxt build를 실행할 때 .output 디렉터리에 이 dist를 생성합니다.

출력물에는 어떤 환경에서든(실험적인 브라우저 서비스 워커 포함!) Nuxt 서버를 실행하고 정적 파일을 서빙하기 위한 런타임 코드가 포함되어 있어, JAMstack을 위한 진정한 하이브리드 프레임워크가 됩니다. 추가로, Nuxt는 멀티 소스 드라이버와 로컬 에셋을 지원하는 네이티브 스토리지 레이어를 구현합니다.

GitHub에서 Nitro 엔진에 대해 더 읽어보세요.