# λ€λΉκ²μ΄μ  κ°λ
λ€λΉκ²μ΄μ  κ°λλ μ¬μ©μμ κΆνμ λ°λΌ νμ΄μ§ μ κ·Όμ λ§κ±°λ νμ΄μ§λ₯Ό λ‘λ©νκΈ° μ μ λ°μ΄ν°λ₯Ό 미리 λΆλ¬μ¬ λ μ¬μ©νκΈ° μ’μ κΈ°μ μ λλ€. μ¬μ€μ μ±κΈ νμ΄μ§ μ ν리μΌμ΄μ μ ꡬνν λλ κ±°μ νμλ‘ κ΅¬νν΄μΌ ν©λλ€.
# λ€λΉκ²μ΄μ  κ°λ μ’ λ₯
λ€λΉκ²μ΄μ  κ°λ μ’ λ₯λ μ μ, μ§μ, μ»΄ν¬λνΈ 3κ°μ§κ° μμ΅λλ€. μ£Όλ‘ μ¬μ©λλ μ μκ³Ό μ§μ λ€λΉκ²μ΄μ  κ°λλ₯Ό μ΄ν΄λ³΄κ² μ΅λλ€.
# λ€λΉκ²μ΄μ  μ μ κ°λ
μ μ κ°λλ₯Ό μ€μ νλ μ½λμ λλ€.
var router = new VueRouter();
router.beforeEach(function(to, from, next) {
  // ...
});
λ·° λΌμ°ν° μΈμ€ν΄μ€λ₯Ό νλ μμ±νκ³  ν΄λΉ μΈμ€ν΄μ€λ₯Ό μ°Έμ‘°νλ λ³μμ beforeEach() APIλ₯Ό νΈμΆν©λλ€. μΈμλ‘ λ°μ 3κ°μ λ³μλ λ€μκ³Ό κ°μ μν μ ν©λλ€.
- to : μ΄λν url
 - from : νμ¬ url
 - next : toμμ μ§μ ν urlλ‘ μ΄λνκΈ° μν΄ κΌ νΈμΆν΄μΌ νλ ν¨μ
 
# λ€λΉκ²μ΄μ  μ§μ κ°λ
λΌμ°ν λ‘μ§μ λ°λΌμ λλ‘λ μ§μκ³Ό μ μμ μμ΄μ μ¬μ©ν΄μΌ ν λκ° μμ΅λλ€. μ§μ κ°λλ μλμ κ°μ΄ ꡬνν©λλ€.
var router = new VueRouter({
  routes: [
    {
      path: '/login',
      component: Login,
      beforeEnter: function(to, from, next) {
        // μΈμ¦ κ° κ²μ¦ λ‘μ§ μΆκ°
      }
    }
  ]
})
beforeEnter()μ μΈμ 3κ°λ μμμ μ΄ν΄λ³Έ λ΄μ©κ³Ό λμΌν©λλ€.
# λ€λΉκ²μ΄μ  κ°λλ‘ μΈμ¦ μ 보 νμΈ
λ€λΉκ²μ΄μ  κ°λκ° κ°μ₯ λ§μ΄ μ°μ΄λ κ³³μ μ¬μ©μ μΈμ¦ μ 보μ λ°λΌ μ κ·Όμ λ§λ λ‘μ§μ λλ€.
router.beforeEach(function(to, from, next) {
  // to: μ΄λν  urlμ ν΄λΉνλ λΌμ°ν
 κ°μ²΄
  if (to.matched.some(function(routeInfo) {
    return routeInfo.meta.authRequired;
  })) {
    // μ΄λν  νμ΄μ§μ μΈμ¦ μ λ³΄κ° νμνλ©΄ κ²½κ³  μ°½μ λμ°κ³  νμ΄μ§ μ νμ νμ§ μμ
    alert('Login Please!');
  } else {
    console.log("routing success : '" + to.path + "'");
    next(); // νμ΄μ§ μ ν
  };
});
β Code Splitting Transition & Animation β