프론트엔드 개발 · 중급
Nuxt.js 3에서 서버 사이드 렌더링(SSR) 환경에서 데이터를 비동기적으로 가져오는 주요 방법들(예: useAsyncData, useFetch)을 설명하고, 각각의 특징과 사용 시나리오를 비교해주세요.
힌트 · useAsyncData는 일반적인 비동기 데이터 가져오기에, useFetch는 API 요청에 특화되어 있으며 캐싱, 에러 처리 등의 편의 기능을 제공합니다.
useAsyncDatauseFetchSSR캐싱에러 핸들링
모범답안
Nuxt 3에서 SSR 환경에서 데이터를 비동기적으로 가져오는 주요 방법은 useAsyncData와 useFetch입니다.
useAsyncData는 가장 기본적인 데이터 fetching 방식입니다. Promise를 반환하는 함수를 인자로 받아 데이터를 가져오고, 로딩 상태와 에러를 관리할 수 있게 해줍니다. 일반적인 비동기 작업에 유용합니다.
useFetch는 useAsyncData를 기반으로 만들어졌지만, API 엔드포인트에서 데이터를 가져오는 데 특화되어 있습니다. 자동으로 HTTP 요청을 보내고, 응답을 처리하며, 캐싱, 에러 핸들링 등 API 요청에 필요한 다양한 기능을 내장하고 있습니다. API 서버와 통신할 때는 useFetch를 사용하는 것이 더 편리합니다.
예를 들어, 블로그 포스트 목록을 가져올 때는 useFetch('/api/posts')를 사용하고, 특정 계산 결과를 비동기적으로 가져올 때는 useAsyncData(() => computeResult())를 사용할 수 있습니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 Vue.js / Nuxt 면접 질문
- Vue 컴포넌트 간 통신에서 'props'와 'emit'은 기본적인 부모-자식 통신 방식입니다. 이 외에 복잡한 컴포넌트 트리에서 부모-자식 관계가 아닌 컴포넌트 간 효율적인 통신 방법들(예: provide/inject, Pinia/Vuex)을 설명하고, 각 방법의 장단점을 비교해주세요.
- Vue Router의 내비게이션 가드(Navigation Guards)는 무엇이며, 어떤 종류(전역, 라우트별, 컴포넌트 내)가 있고 각각 어떤 시점에 호출되는지 설명하고 실제 애플리케이션에서 활용 사례를 들어주세요.
- Vue 컴포넌트에서 'slot'을 사용하는 목적은 무엇이며, 'named slot'과 'scoped slot'의 차이점을 구체적인 예시와 함께 설명해주세요.
- Nuxt.js의 미들웨어(Middleware)는 무엇이며, 전역 미들웨어, 라우트 미들웨어, 명명된 미들웨어의 차이점을 설명하고 각 유형의 적절한 사용 사례를 제시해주세요.
- 대규모 Vue 3 애플리케이션에서 Composition API와 TypeScript를 사용하여 복잡한 비즈니스 로직을 모듈화하고 재사용 가능한 형태로 설계할 때, 어떤 디자인 패턴(예: Custom Composables, Provide/Inject)을 고려하며, 각 패턴의 장단점 및 적절한 사용 시나리오에 대해 설명해 주십시오.
- Nuxt 3의 Nitro 서버 엔진이 제공하는 주요 이점은 무엇이며, 이를 활용하여 API 라우트, 서버 미들웨어, 서버 컴포넌트 등 백엔드 로직을 어떻게 효과적으로 구현하고 최적화할 수 있는지 구체적인 예시와 함께 설명해 주십시오.