Meteor Flow Router:路由订阅与模板订阅

Meteor Flow Router: Route subscriptions vs Template subscriptions

我正在使用 Flow-Router 开发 Meteor 应用程序。

我正在通过创建发布所有用户的发布函数来检索整个用户列表(多个用户)。在我的路线中,我订阅了这个(基于路线的订阅),然后我创建了一个模板助手方法,我在其中按特定顺序返回这些用户。

我还显示了当前用户的个人资料。我试图通过路线订阅来做到这一点(基本上如上所述)但我无法让它工作。然后我将其转换为基于模板的订阅并让它工作。所以我在模板 onCreated 函数中放置了一个自动运行,创建了一个帮助程序来检索该用户,并且在模板中我正在做一个 Template.subscriptionsReady。

长话短说:谁能解释一下基于路由的订阅和基于模板的订阅之间的区别。我已经阅读 this 多次,我可以让两者都很好地工作,但老实说,我仍然不明白什么时候使用什么。

来自流量路由器背后的团队 Kadira,https://kadira.io/academy/meteor-routing-guide/content/subscriptions-and-data-management。解释为什么你应该使用模板订阅而不是路由器订阅。

查看摘录:

订阅和数据管理

Meteor 应用程序的重要组成部分之一是数据和订阅管理。过去,我们在路由器本身调用订阅并在其中管理数据。但是,现在我们认为这是一种反模式。

为什么?

在客户端,我们无法控制数据何时可用于应用程序。您需要等待订阅发送数据。 路由器需要等待数据并且它需要是反应性的。这会导致很多不可预知的行为,尤其是当您的应用变大时。 在加载数据时,我们可能需要显示加载消息。所以我们需要找到与路由器和渲染层交互的方法。显示全局加载器不是一个好的模式。 现在,无论您在何处重用模板,都需要在路由器中再次为其定义数据要求。