History 模式/导航守卫/路由懒加载
History 模式利用 history.pushState API 来完成 URL 跳转而无须重新加载页面。
const router = new VueRouter({
mode: 'history',
routes: [...]
})
导航守卫
切换路由时,有分辨的让某些路径可以直接访问,而对另外一些路径进行中断、跳转或其他操作。
注意,next()在每个守卫中都至少调用一次。
router.beforeEach((to, from, next) => {
if (to.matched.some(record => record.meta.requiresAuth)) {
store.dispatch('checkLogin').then(isLogin=>{
if (!isLogin) {
next({
path: '/login',
query: { redirect: to.fullPath }
})
} else {
next()
}
})
} else {
next() // 确保一定要调用 next()
}
})
路由懒加载
当打包构建应用时,JavaScript 包会变得非常大,影响页面加载。如果我们能把不同路由对应的组件分割成不同的代码块,然后当路由被访问的时候才加载对应组件,这样就更加高效了。
import ('./Foo.vue')