铁路由器与流量路由器



我问这个问题是因为我有点困惑。我刚刚开始发现流星(最好晚了,然后永远不会(,我正在阅读/听到很多讨论,为什么我应该使用Flow-router而不是Iron router

我从 Iron router 开始了我的项目,但我读得越多,我就越觉得我应该切换到 Flow-router 进行许多表演,渲染原因......

什么优点和缺点使它们与众不同?

Sank U !

官方文档推荐 FlowRouter: https://guide.meteor.com/routing.html

但是您也可以使用铁路由器。我已经在不同的项目中使用了它们,但我决定遵循流星官方的建议。

我使用IronRouter,因为描述指出

"FlowRouter只处理订阅的注册。它没有 等到订阅准备就绪。

(https://github.com/kadirahq/flow-router(因此,当您订阅大型数据时,您将获得额外的页面更新或失败。所以我选择了IronRouter,它在文档中描述了如何准备好等待订阅(WaitOn(。它对我来说 2 年没有问题。从更新的角度来看,两个路由器都已经很长时间没有更新了,超过一年,因此目前尚不清楚修订版是否会随着新版本Meteor的发布而到来。

在浏览器中按 F12,注意是否有任何错误。就我而言,我删除了一个包,但没有删除调用该包的代码。

它出错了,看起来铁路由器是罪魁祸首。

删除

了加载我删除的其他一些库的有问题的代码,嘿,铁路由器工作。

FlowRotuer 的问题在于您必须跳过箍才能将数据加载到模板中。

它使代码变得复杂、支离破碎且难以理解(我的观点(。

Iron Router 允许您将数据作为第二个参数传递给渲染函数,并直接从模板访问它。

使用 Flow Router,您必须首先将数据写入会话,然后编写模板帮助程序来拉取会话数据或将模板包装在"with"元素中。

这是FlowRouter如何让您将一些示例放入模板的示例

Template.templateName.onCreated(function() {
   Meteor.call('thirdPartyAPI', function(error, result) {
      Session.set('result', result);
   });
});
Then on the template side you could have:
{{#with result}}
   Content that requires a context
{{/with}}
And you would have a template helper that returned the Session/ReactiveVar, e.g.
Template.templateName.helpers({
  result: function() {
    return Session.get('result');
  }
});

与铁路由器类似的示例

Router.route('/post/:_id', function () {
  this.render('Post', {
    data: function () {
      return Posts.findOne({_id: this.params._id});
    }
  });
});

最新更新