[javascript] Vue Router의 네비게이션 가드 플로우

Vue Router는 Vue.js 애플리케이션에서 라우팅 및 네비게이션을 처리하기 위한 공식 라이브러리입니다. 네비게이션 가드는 Vue Router에서 제공하는 기능 중 하나로, 라우트로 이동하기 전 또는 이후에 특정 동작을 수행하거나 네비게이션을 제어할 수 있습니다.

네비게이션 가드 플로우

Vue Router의 네비게이션 가드는 라우팅 이벤트 중에서 다음과 같은 다섯 가지 단계를 거칩니다.

  1. 전역 before: 전역 전환 가드는 라우팅 이벤트가 발생하기 전에 호출됩니다. 라우트가 변경되기 전에 어떤 동작을 수행하고 싶을 때 사용합니다.

  2. 라우트 before: 라우트 전환 가드는 현재 라우트의 변경으로 인한 전환 이벤트가 발생하기 전에 호출됩니다. 특정 라우트에 대한 지역적인 전환 가드를 정의할 수 있습니다.

  3. 비동기 라우트 컴포넌트 로드: Vue Router는 동적 라우트 컴포넌트를 로드할 때 비동기적으로 컴포넌트를 가져오는 기능을 제공합니다.

  4. 라우트 after: 라우트 전환 이후에 호출되는 후킹입니다. 라우팅 이벤트 이후에 동작을 처리할 수 있습니다.

  5. 전역 after: 전역 후킹은 라우팅 이벤트가 완전히 처리된 후에 호출됩니다.

이러한 다섯 단계를 이해하고 활용하여 네비게이션 가드를 구현하는 것이 Vue Router를 사용하는데 중요합니다.

네비게이션 가드 구현 예시

다음은 Vue Router에서 네비게이션 가드를 구현하는 간단한 예시입니다.

import Vue from 'vue';
import VueRouter from 'vue-router';

Vue.use(VueRouter);

const router = new VueRouter({
  routes: [
    {
      path: '/profile',
      component: Profile,
      beforeEnter: (to, from, next) => {
        // 이동 전 동작 수행
        // 예시: 인증 여부 확인
        if (/* 인증되지 않음 */) {
          next('/login'); // 로그인 페이지로 리디렉션
        } else {
          next(); // 다음 단계로 이동
        }
      }
    }
  ]
});

위 코드에서 beforeEnter 속성을 사용하여 라우트 전환 가드를 구현하고 있습니다. 라우트 /profile로 이동하기 전에 인증 여부를 확인하여 로그인 페이지로 리디렉션하거나 계속 진행하도록 설정하고 있습니다.

마무리

Vue Router의 네비게이션 가드는 애플리케이션의 라우팅 흐름을 세밀하게 제어할 수 있는 강력한 도구입니다. 다양한 상황에 맞게 네비게이션 가드를 활용하여 보다 안정적이고 효율적인 라우팅을 구현할 수 있습니다.

더 자세한 내용은 Vue Router 공식 문서를 참고하시기 바랍니다.