本文记录一下我在开发vue我的项目时,应用vue-router遇到过得问题。

routes

const routes = [  {    path: '/cardLesson',    name: 'cardLesson',    component: () => import( '../views/myCard/cardLesson'),    meta: {      auth: false,      needPhone: false,      keepAlive: false    }  },  ...]

导航守卫

router.beforeEach((to, from, next) => {  if (to.meta && to.meta.auth) {    if (!Vue.prototype.$checkLogin()) {      return Vue.prototype.$bus.$emit('auth-login')    }    if (to.meta.needPhone && !Vue.prototype.$checkPhone()) {      return Vue.prototype.$bus.$emit('auth-phone')    }    return next()  } else {    next()  }})

以上的配置,在进入路由前会先检测有没有权限管制,如果须要登录则会触发登录监听事件,弹出登录窗口。如果是从其余我的项目跳转到vue我的项目的路由,却无奈失常弹出登录窗口,因为单页面利用第一次加载,$bus还没有注册。

解决页面加载进度条

router.beforeEach((to, from, next) => {  NProgress.start();  to.meta.keepAlive = !(to.meta && to.meta.skipCache);  next()});router.afterEach(() => {  NProgress.done()});

scrollBehavior

const router = new VueRouter({  routes,  scrollBehavior(to,from,saveTop){    if(saveTop){      return saveTop;    }else{      return {x:0,y:0}    }  },})