如何在Vue.js 2中导出路由器实例

Кам*_*мур 3 javascript vue.js vuejs2

我正在创建一个Router实例,以便在我的应用中实现路由系统。因此,我这样做的方式是:

import Vue from 'vue'
import Router from 'vue-router'

Vue.use(Router)

export default new Router({
  routes: [
    {
      path: '/',
      name: 'Home',
      component: Home
    },
  ]
})
Run Code Online (Sandbox Code Playgroud)

但是我还需要.beforeEach()在路由器实例上实现钩子。解决方法是什么?

我发现这样的方式:

router.beforeEach((to, from, next) => {
    // ...
});
Run Code Online (Sandbox Code Playgroud)

但是我想以我的方式是不正确的?这样做的正确方法是什么?

Кам*_*мур 5

Solved:

import Vue from 'vue'
import Router from 'vue-router'

Vue.use(Router)

const router = new Router({
  routes: [
    {
      path: '/',
      name: 'Home',
      component: Home
    },
  ]
})
Run Code Online (Sandbox Code Playgroud)

Implementing .beforeEach() hook on router instance:

router.beforeEach((to, from, next) => {
  if(to.meta.requiresAuth) { 
    if(store.state.session.authenticated) { 
        next();
    }
    else {
        next('/admin/login');
    }
  }
  else {
    next();
  }
});
Run Code Online (Sandbox Code Playgroud)

Exporting the instance:

export default router;
Run Code Online (Sandbox Code Playgroud)