프론트엔드 개발 · 중급
Vue Router의 내비게이션 가드(Navigation Guards)는 무엇이며, 어떤 종류(전역, 라우트별, 컴포넌트 내)가 있고 각각 어떤 시점에 호출되는지 설명하고 실제 애플리케이션에서 활용 사례를 들어주세요.
힌트 · 내비게이션 가드는 라우트 이동 전후에 특정 로직을 실행하는 훅입니다. 인증, 권한 확인, 데이터 로딩 등에 활용됩니다.
Navigation GuardsbeforeEachbeforeEnterbeforeRouteEnter메타 정보
모범답안
Vue Router의 내비게이션 가드는 라우트 이동 과정에서 특정 시점에 실행되는 함수입니다. 라우트 접근을 제어하거나, 데이터를 미리 로딩하는 등의 작업을 수행할 수 있습니다.
종류는 크게 세 가지가 있습니다.
- 전역 가드:
router.beforeEach,router.afterEach등으로 정의하며, 모든 라우트 이동에 대해 실행됩니다. 인증 상태 확인 등에 유용합니다. - 라우트별 가드: 라우트 설정 내에
beforeEnter를 사용하여 정의하며, 해당 라우트에 진입할 때만 실행됩니다. 특정 라우트에 대한 권한 검사에 적합합니다. - 컴포넌트 내 가드: 컴포넌트 내에
beforeRouteEnter,beforeRouteUpdate,beforeRouteLeave등으로 정의하며, 해당 컴포넌트가 라우트에 의해 렌더링될 때 실행됩니다. 컴포넌트와 관련된 데이터 로딩이나 정리 작업에 활용됩니다.
예를 들어, beforeEach를 사용하여 모든 페이지에 접근하기 전에 사용자의 로그인 여부를 확인하고, 로그인되지 않았다면 로그인 페이지로 리다이렉트하는 기능을 구현할 수 있습니다. 라우트 메타 정보(meta fields)를 활용하여 특정 라우트에만 적용되는 가드를 만들 수도 있습니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 Vue.js / Nuxt 면접 질문
- Vue 3 Composition API에서 'ref'와 'reactive'는 반응형 데이터를 생성하는 데 사용됩니다. 이 두 함수의 주요 차이점은 무엇이며, 각각 어떤 상황에서 사용하는 것이 더 적절한지 구체적인 예시와 함께 설명해주세요.
- Vue 컴포넌트에서 'computed' 속성과 'watch' 옵션(또는 watch effect)은 모두 반응형 데이터의 변화에 따라 특정 로직을 수행할 수 있습니다. 이 둘의 주요 차이점을 설명하고, 각각 어떤 상황에 더 적합한지 실무 예시를 들어 설명해주세요.
- Vue 컴포넌트 간 통신에서 'props'와 'emit'은 기본적인 부모-자식 통신 방식입니다. 이 외에 복잡한 컴포넌트 트리에서 부모-자식 관계가 아닌 컴포넌트 간 효율적인 통신 방법들(예: provide/inject, Pinia/Vuex)을 설명하고, 각 방법의 장단점을 비교해주세요.
- Vue 컴포넌트에서 'slot'을 사용하는 목적은 무엇이며, 'named slot'과 'scoped slot'의 차이점을 구체적인 예시와 함께 설명해주세요.
- Nuxt.js 3에서 서버 사이드 렌더링(SSR) 환경에서 데이터를 비동기적으로 가져오는 주요 방법들(예: useAsyncData, useFetch)을 설명하고, 각각의 특징과 사용 시나리오를 비교해주세요.
- Nuxt.js의 미들웨어(Middleware)는 무엇이며, 전역 미들웨어, 라우트 미들웨어, 명명된 미들웨어의 차이점을 설명하고 각 유형의 적절한 사용 사례를 제시해주세요.