# λ€λΉκ²μ΄μ κ°λ
λ€λΉκ²μ΄μ κ°λλ μ¬μ©μμ κΆνμ λ°λΌ νμ΄μ§ μ κ·Όμ λ§κ±°λ νμ΄μ§λ₯Ό λ‘λ©νκΈ° μ μ λ°μ΄ν°λ₯Ό 미리 λΆλ¬μ¬ λ μ¬μ©νκΈ° μ’μ κΈ°μ μ λλ€. μ¬μ€μ μ±κΈ νμ΄μ§ μ ν리μΌμ΄μ μ ꡬνν λλ κ±°μ νμλ‘ κ΅¬νν΄μΌ ν©λλ€.
# λ€λΉκ²μ΄μ κ°λ μ’ λ₯
λ€λΉκ²μ΄μ κ°λ μ’ λ₯λ μ μ, μ§μ, μ»΄ν¬λνΈ 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 β