【问题标题】:Iron Router vs Flow Router铁路由器与流量路由器
【发布时间】:2017-08-15 11:08:53
【问题描述】:

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

我从 Iron router 开始我的项目,但我阅读的越多,我认为我应该切换到Flow-router,因为许多性能,渲染原因......

哪些优点和缺点使它们与众不同?

Sank U !

【问题讨论】:

  • 我个人推荐Flow Router
  • @mostafizrahman 你介意解释一下原因吗?
  • 在几个项目中使用它,没有遇到任何重大问题,它有更好的文档等

标签: javascript meteor iron-router flow-router


【解决方案1】:

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');
  }
});

Iron Router 的类似示例

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

【讨论】:

    【解决方案2】:

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

    它出错了,看起来应该是 Iron Router 的罪魁祸首。

    删除了加载我删除的其他一些库的违规代码,嘿,Iron Router 工作正常。

    【讨论】:

      【解决方案3】:

      我使用 IronRouter,因为描述表明

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

      (https://github.com/kadirahq/flow-router) 因此,当您订阅大数据时,您会获得额外的页面更新或失败。所以我选择了 IronRouter,它在文档中描述了如何使等待订阅准备就绪(WaitOn)。它对我来说 2 年没有问题。从更新来看,这两款路由器都很久没有更新了,一年多了,所以随着新版Meteor的发布,还不清楚是否会更新。

      【讨论】:

      • 请使用大大改进的flow-router-extra package,它在继续路由的action() 功能之前肯定会等待订阅准备好(即客户端上可用的第一个数据批)。跨度>
      【解决方案4】:

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

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

      【讨论】:

      • 我猜 FlowRouter 不做服务器端路由。对吗?
      • 正确,如果你在你的应用程序中构建任何 api 功能,这很糟糕。我目前正在恢复到 Iron... 叹息..
      • 我发现让路由器只处理客户端路由逻辑会更好。对于服务器端 API 路由,我使用 webapp 包(上面结合了其他工具)。
      猜你喜欢
      • 2014-09-03
      • 1970-01-01
      • 2016-07-27
      • 1970-01-01
      • 1970-01-01
      • 2016-01-22
      • 1970-01-01
      • 1970-01-01
      • 2015-08-11
      相关资源
      最近更新 更多