3
我想就如何订阅客户端数据提供建议。提前预订所有需要的数据是最简单的,但我会想到在第一次加载时性能可能会很高。 使用Iron-Router,订阅可以在路由期间完成,然后根据需要填充数据,并且您有waitOn,这很酷。流星数据订阅策略
虽然(特别是在大型项目中)订阅路线肯定会成为管理的噩梦,因为没有对已订阅数据的全局视图。与此相关 - 如果从不同的页面多次调用相同的订阅,会发生什么?
我想就如何订阅客户端数据提供建议。提前预订所有需要的数据是最简单的,但我会想到在第一次加载时性能可能会很高。 使用Iron-Router,订阅可以在路由期间完成,然后根据需要填充数据,并且您有waitOn,这很酷。流星数据订阅策略
虽然(特别是在大型项目中)订阅路线肯定会成为管理的噩梦,因为没有对已订阅数据的全局视图。与此相关 - 如果从不同的页面多次调用相同的订阅,会发生什么?
假设立即激活所有订阅并不是一个好主意,这是正确的。每次激活订阅时,您都会在服务器和客户端上支付性能损失。如果你想要最大化性能,你的目标应该是:
看一看下面的例子:
Meteor.subscribe('news');
Tracker.autorun(function() {
if (Meteor.user()) {
Meteor.subscribe('friends');
Meteor.subscribe('room', Session.get('roomId'));
}
});
friends
订阅根据路由器可能设置的会话变量roomId
进行更改。我有一个复杂的生产应用程序有很多的路线,我个人发现有一个单一的订阅文件更容易维护。这就是说,我认为这是一个品味的问题,所以你需要尝试两种方式,看看你最舒服的。
最后一个问题的答案是已发布的文档被合并。如果您为同一个集合激活了两个订阅,并且每个订阅都发布了相同的N个文档,那么客户端上应该有N个文档。如果P1发布了N个文档,并且P2发布了M个文档,则您将在客户端上拥有M个联盟N个文档。这在meteor book中有更详细的讨论。
没有任何流星订阅足够聪明。 http://docs.meteor.com/#meteor_subscribe – Denis