Javascript Meteor:配置特定于用户类型的路由的约定

Javascript Meteor:配置特定于用户类型的路由的约定,javascript,meteor,iron-router,spacebars,Javascript,Meteor,Iron Router,Spacebars,我正在创建一个有两种用户类型的应用程序。这取决于用户创建。此字段位于Meteor.users.userType:publisher中,也可以是userType:reader 除了两个用户类型共享同一个主页(也将是公共的),“publisher”和“reader”之间的所有其他内容都将完全不同。例如模板布局、导航、传入的数据 我是否应该使用空格键{{{#if}}块,只显示用户类型可用的相关路径,就像我在下面使用iron:router的示例中的注册/登录路径中所做的那样?这样,我将使用许多if语句多

我正在创建一个有两种用户类型的应用程序。这取决于用户创建。此字段位于
Meteor.users.userType:publisher
中,也可以是
userType:reader

除了两个用户类型共享同一个主页(也将是公共的),“publisher”和“reader”之间的所有其他内容都将完全不同。例如模板布局、导航、传入的数据

我是否应该使用空格键{{{#if}}块,只显示用户类型可用的相关路径,就像我在下面使用iron:router的示例中的注册/登录路径中所做的那样?这样,我将使用许多if语句多次根据用户类型声明模板和功能

到目前为止,由于用户类型具有不同的用户配置文件数据结构,我只是调用每个用户类型需要查看的所需字段。从表面上看,这似乎很好,因为我为这两个用户类型创建了单独的模板和路径。但必须有更好的解决方案,包括在应用程序启动时声明用户类型

一旦用户登录,就可以用iron router确定用户类型吗?因此,如果userType是“reader”,代码可以分支到一个特定的路由配置,如果userType是“publisher”,代码可以分支到另一个路由配置

在提交应用程序结构之前,我想详细介绍一些想法

<template name="appBody">
<ul class="nav nav-tabs" role="tablist">
    <li><a href="{{pathFor 'allPosts'}}">All Posts</a></li> // public home page
    <li><a href="{{pathFor 'profilePagePublisher'}}">ProfilePage Publisher</a></li> //for userType: publisher
    <li><a href="{{pathFor 'createPost'}}">Create Posts</a></li> //for userType: publisher
    <li><a href="{{pathFor 'profilePageReader'}}">ProfilePage Reader</a></li> //for userType: reader
     <li><a href="{{pathFor 'readingList'}}">Reading List</a></li> //for userType: reader
    {{#if currentUser}}
    <li><a class="logout btn-secondary" href="#">Logout</a></li>
    {{else}}
    <li><a href="{{pathFor 'signin'}}" class="btn-secondary">Sign In</a></li>
    <li><a href="{{pathFor 'join'}}" class="btn-secondary">Join</a></li>
    {{/if}}
  </ul>
  {{> yield}}
</template>

  • //公共主页
  • //对于用户类型:publisher
  • //对于用户类型:publisher
  • //对于userType:reader
  • //对于userType:reader {{{#如果当前用户}}
  • {{else}
  • {{/if}
{{>产量}
提前感谢您考虑提供帮助。

您可以尝试使用。创建两个名为“publisher”和“reader”的模板,然后在父模板中包含它们,如下所示:

{{> UI.dynamic template=currentUser.userType }}

这是一个非常好的简单解决方案。完全分离模板,因此,我的助手对每个模板/用户类型都是唯一的。我是否删除layoutTemplate中的{{>yield},并在那里添加{{>UI.dynamic template=currentUser.userType}?我正在使用iron router,所以想知道该代码是否会进入路由控制器“layoutTemplate”?