javascript - 具有动态路由和组件的 Vue

标签 javascript vue.js quasar-framework

尝试构建一个测试应用程序,看看 Vue 是否适合替代我们的 AngularJS 应用程序。同时尝试学习Vue。

用户登录后,我们会获取该用户的一些 Angular 色。基于这些 Angular 色就是菜单的构建方式。

用户1 { Angular 色1、 Angular 色2、 Angular 色3}

理论上

用户2 { Angular 色1, Angular 色3}

因此,Role1 将具有/start/page1 和 page1(组件)的路径以及两个子组件。 与/start/page2 的 Role2 路径相同,page2 上会有组件。

在我知道用户拥有哪些 Angular 色之前,我真的不想构建路由。

我正在使用 quasar-framework.org 并使用滑出菜单。尝试即时创建菜单。看来我需要已经导入的组件?

我可以通过循环 Angular 色并设置菜单列表来构建菜单。

尝试使用 this.$router.addRoutes(newRoute) 动态构建路由; 为此,我需要已经导入该组件。

我猜Quasar 的方式是动态加载组件。

在router.js中

function loadPage (component) {
  return () => import(`../../pages/${component}.vue`)
}

我似乎无法在方法部分使用该函数。

这在 Vue 中可能吗?

最佳答案

看看vue-router lazy loading documentationQuasar lazy loading documentation

您无法在方法中执行此操作,但如果用户权限与路由权限不匹配,则组件永远不会加载,这基本上就是您想要的。

示例

  const routes = [
    {
      path: '/some-page-protected',
      component: () => import('pages/SomePage'),
      meta: {role: 'admin'}
    }
  ]

或者

  const SomePage = () => ('pages/SomePage')
  const routes = [
    {
      path: '/some-page-protected',
      component: SomePage,
      meta: {role: 'admin'}
    }
  ]

关于javascript - 具有动态路由和组件的 Vue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49015876/

相关文章:

javascript - Ajax 。我怎样才能返回值?

javascript - 如何从函数中始终返回小数点后两位的数字

javascript - 如果数据为真,则向用户显示确认消息

vue.js - vuetify 中的日期选择器和验证器

javascript - 使用组件甚至无需声明它

vue.js - 如何使用 prop 控制子组件对父组件的可见性?

javascript - 在函数中运行代码就像在另一个作用域中运行一样

javascript - 为什么我无法在我的系统中安装 React 和卸载 create-react-app?

javascript - 如何在不调用API的情况下设置Vuex数据?

mysql - 我们如何使用 vue js 从数据库中检索产品数量?