Meteor Iron Router-将对象传递与将函数传递给Router.route()之间的区别

Meteor Iron Router-将对象传递与将函数传递给Router.route()之间的区别,meteor,iron-router,Meteor,Iron Router,我正在阅读处的文档,但无法清楚地了解何时将函数传递给route()方法以及何时传递对象 使用数据呈现模板的示例--将函数作为第二个参数传递: Router.route('/post/:_id',函数(){ this.render('Post'{ 数据:函数(){ return Posts.findOne({u id:this.params.\u id}); } }); }); 等待订阅完成的示例--将对象作为第二个参数传递: Router.route('/post/:_id'{ //在订阅准备

我正在阅读处的文档,但无法清楚地了解何时将函数传递给
route()
方法以及何时传递对象

使用数据呈现模板的示例--将函数作为第二个参数传递:

Router.route('/post/:_id',函数(){
this.render('Post'{
数据:函数(){
return Posts.findOne({u id:this.params.\u id});
}
});
});
等待订阅完成的示例--将对象作为第二个参数传递:

Router.route('/post/:_id'{
//在订阅准备就绪之前,将呈现此模板
loadingTemplate:“正在加载”,
waitOn:函数(){
//返回一个句柄、函数或数组
return Meteor.subscribe('post',this.params.\u id);
},
行动:功能(){
这个.render('myTemplate');
}
});
如您所见,文档中的一些示例使用一种形式,而另一些示例使用另一种形式。一般来说,当我发现一些文档解决了我的想法时,它使用了一种与我在文档中其他地方采用的示例不同的形式


这两种形式之间的关系是什么?我如何混合搭配?

我自己也在学习这一点。我发现,您可以根据需要交替使用您提到的两种方法

格式如您所述,您可以传递一个函数作为路由定义的第二个参数

我发现的最大区别是,使用函数可以覆盖Router.config中的某些设置。例如,您必须注意如何定义渲染,以免覆盖布局模板

我觉得这是一个偏好的问题,因为我已经看到了许多不同的例子如何设置路线(例如)

基本上,我使用Router.map()尝试处理大多数标准设置,然后试图定义钩子来控制通过路由器的流量。然后,我希望根据需要设置自定义控制器,并随着项目的扩展而扩展


总而言之,我觉得自己在定义路线时远离了使用函数,因为它需要更加明确,尽管我可以看到它有一个目的,当我想要更精细地处理路线、条件和参数时。

谢谢-但是,我现在已经从IronRouter切换到Arunoda的FlowRouter,我向大家推荐这个。你为什么喜欢FlowRouter?我认为FlowRouter有一个更容易理解的API。另外,当我使用IronRouter时,我一直在遇到一些问题,在我没有预料到的情况下重新运行。详情如下: