【发布时间】:2021-11-07 02:28:17
【问题描述】:
我得到了带有 vue-router 的 Vue2 应用程序,其路由配置如下:
export default {
path: "/",
redirect: "/dashboard",
component: AdminLayout,
meta: {
requiresAuth: true
},
children: [
{
path: "/dashboard",
name: "Dashboard",
component: Dashboard
},
{
path: "/add/user",
name: "InviteUser",
component: InviteUser
},
{
path: "/groups",
name: "Groups",
component: Groups
},
...
在应用程序中,我们有两种不同类型的用户 - 管理员和普通用户。其中一些路由应该可供两者访问,但问题是用户应该根据其类型(权限)看到不同的布局 - 管理员为AdminLayout,普通用户为UserLayout。
有什么方法可以根据来自 vuex 的布尔值向应用显示用户应该看到哪个模板并保持路由路径?
- 在
/dashboard管理员将看到带有AdminLayout的仪表板 - 在
/dashboard上,普通用户将看到带有UserLayout的仪表板
我的主要路由配置:
import Vue from "vue";
import VueRouter from "vue-router";
import SessionRoutes from "./session.js";
import AdminRoutes from "./admin.js";
import defaultRoutes from "./default";
Vue.use(VueRouter);
const routes = [AdminRoutes, SessionRoutes, defaultRoutes];
const router = new VueRouter({
mode: "history",
routes
});
export default router;
【问题讨论】:
-
请看here。
-
这似乎不太好。
-
这是 nuxt 处理得非常好的众多事情之一 (nuxtjs.org/docs/2.x/concepts/views#layouts)。也许这是你的一个选择。
-
我同意,但是我用 VueCLI 完成了几乎所有应用程序,所以此时切换到 Nuxt 没有意义:/
-
什么是 AdminLayout/UserLayout ?它们只是组件吗?如果是这样,则可以将路由数组中的组件部分作为函数并从该函数返回所需的组件。这里的关键是任何具有必填字段的函数都可以用作 Vue 组件
标签: javascript vue.js vuex vue-router