基于路由的渲染
现在我们了解到如何定义路由以及访问关于当前路由的信息,当用户访问一个路由时,我们通常能够做你想做的事---在一个呈现UI的屏幕中渲染它。
在这部分内容中,我们将讨论如何使用Blaze作为UI引擎渲染路由。如果你正使用React或Angular开发你的应用,你将会得到类似的概念,但代码方面则会有一些不同
当使用Flow Router时,最简单的方法针对不同的URL显示不同的页面视图是使用辅助的Blaze布局包。首先,确认你已经安装了Blaze布局包:
meteor add kadira:blaze-layout
当使用这个包时,我们需要定义一个“布局”组件。在示例应用Todos中,这个组件被命名为App_body
:
<template name="App_body">
...
{{> Template.dynamic template=main}}
...
</template>
(这并不是完整的App_body
组件,但在这儿我们突出了最重要的部分)。
此时,我们使用一个Blaze中名为Template.dynamic
的属性来渲染一个模板,附加到数据上下文的属性main
中。使用Blaze布局,当路由被访问时我们可以更改main
属性。
我们在List.show
如路由定义的action
方法中做了这些:
FlowRouter.route('/lists/:_id', {
name: 'Lists.show',
action() {
BlazeLayout.render('App_body', {main: 'Lists_show_page'});
}
});
这意味着无论何时当一个用户访问/list/X
形式的URL,Lists.show
路由将会起作用,触发BlazeLayout
的调用,设置App_body
组件中的main
属性。