서버 엔진
Nuxt를 개발하면서, 우리는 새로운 서버 엔진인 Nitro를 만들었습니다.
다음과 같은 많은 기능이 포함되어 있습니다:
- Node.js, 브라우저, 서비스 워커 등 다양한 플랫폼 지원
- 기본적으로 서버리스 지원
- API 라우트 지원
- 자동 코드 분할 및 비동기 로드 청크
- 정적 + 서버리스 사이트를 위한 하이브리드 모드
- 핫 모듈 리로딩이 가능한 개발 서버
API 계층
서버 API 엔드포인트와 미들웨어는 내부적으로 h3를 사용하는 Nitro에 의해 추가됩니다.
주요 기능은 다음과 같습니다:
- 핸들러가 객체/배열을 직접 반환하면 자동으로 JSON 응답 처리
- 핸들러가 프로미스를 반환할 수 있으며, 이는 대기됩니다(
res.end()및next()도 지원) - 본문 파싱, 쿠키 처리, 리디렉션, 헤더 등 다양한 헬퍼 함수 제공
자세한 내용은 h3 문서를 참고하세요.
직접 API 호출
Nitro는 전역적으로 사용 가능한 $fetch 헬퍼를 통해 라우트를 '직접' 호출할 수 있게 해줍니다. 브라우저에서 실행될 경우 서버로 API 호출을 하지만, 서버에서 실행될 경우 관련 함수를 직접 호출하여 추가적인 API 호출을 절약합니다.
$fetch API는 ofetch를 사용하며, 주요 기능은 다음과 같습니다:
- JSON 응답의 자동 파싱(필요시 원시 응답에도 접근 가능)
- 요청 본문과 파라미터가 자동으로 처리되며, 올바른
Content-Type헤더 사용
$fetch의 기능에 대한 자세한 내용은 ofetch를 참고하세요.
타입이 지정된 API 라우트
API 라우트(또는 미들웨어)를 사용할 때, Nitro는 응답을 보내기 위해 res.end()를 사용하지 않고 값을 반환하는 한 해당 라우트에 대한 타입을 생성합니다.
이 타입은 $fetch() 또는 useFetch()를 사용할 때 접근할 수 있습니다.
독립 실행형 서버
Nitro는 node_modules와 독립적인 독립 실행형 서버 dist를 생성합니다.
Nuxt 2의 서버는 독립 실행형이 아니며, nuxt start(또는 nuxt-start, nuxt 배포판) 실행이나 커스텀 프로그래밍 방식으로 Nuxt 코어의 일부가 필요합니다. 이는 불안정하고 깨지기 쉬우며, 서버리스 및 서비스 워커 환경에 적합하지 않습니다.
Nuxt는 nuxt build를 실행할 때 .output 디렉터리에 이 dist를 생성합니다.
출력물에는 Nuxt 서버를 어떤 환경(실험적인 브라우저 서비스 워커 포함)에서도 실행하고 정적 파일을 제공할 수 있는 런타임 코드가 포함되어 있어, JAMstack을 위한 진정한 하이브리드 프레임워크가 됩니다. 또한 Nuxt는 멀티 소스 드라이버와 로컬 자산을 지원하는 네이티브 스토리지 계층을 구현합니다.