router.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. import Vue from "vue";
  2. import Router from "vue-router";
  3. import Home from "./views/Home";
  4. // modules
  5. import login from "./modules/login/router";
  6. import client from "./modules/client/router";
  7. import test from "./modules/test/router";
  8. Vue.use(Router);
  9. /**
  10. * 权限控制:
  11. * 1、不同角色构建不同模块。
  12. * 2、登录成功之后根据角色注册相应模块。
  13. * 3、不同模块打包不同文件。(webpackChunkName)
  14. */
  15. let router = new Router({
  16. routes: [
  17. {
  18. path: "/",
  19. name: "Index",
  20. redirect: { name: "Login" },
  21. },
  22. { ...login },
  23. {
  24. path: "/home",
  25. name: "Home",
  26. component: Home,
  27. redirect: { name: "TaskManage" },
  28. children: [...client],
  29. },
  30. { ...test },
  31. // [lazy-loaded] route level code-splitting
  32. // {
  33. // path: "/about",
  34. // name: "about",
  35. // // this generates a separate chunk (about.[hash].js) for this route
  36. // // which is lazy-loaded when the route is visited.
  37. // component: () =>
  38. // import(/* webpackChunkName: "about" */ "./views/About.vue")
  39. // }
  40. ],
  41. });
  42. // route interceptor
  43. router.beforeEach((to, from, next) => {
  44. const token = Vue.ls.get("token");
  45. if (to.meta.noRequire) {
  46. next();
  47. return;
  48. }
  49. if (!token) {
  50. // 登录失效的处理
  51. next({ name: "Login" });
  52. return;
  53. }
  54. next();
  55. });
  56. export default router;