【发布时间】:2013-10-27 19:15:55
【问题描述】:
我使用过的大多数模板系统都有一个主“布局”模板的概念,然后是针对页面细节的专门内容模板。例如,在 expressjs 中,确实有一个与内容分离的布局模板(iirc 与 ejs 或 jam 模板的工作方式相同)。
经验丰富的 Meteor 开发人员会做什么?
【问题讨论】:
我使用过的大多数模板系统都有一个主“布局”模板的概念,然后是针对页面细节的专门内容模板。例如,在 expressjs 中,确实有一个与内容分离的布局模板(iirc 与 ejs 或 jam 模板的工作方式相同)。
经验丰富的 Meteor 开发人员会做什么?
【问题讨论】:
有多种选择。
1) 在开发版本中使用Iron Router。它仍在进行中,但据我所知,布局已经实现并且非常棒。
2) 等到0.6.0版本的Iron Router稳定发布。
3) 等到 0.6.0 发布,同时使用旧的Router 并复制其布局功能。方法如下:
在index.html 中,使用{{layout}} 而不是{{renderPage}}
<head>...</head>
<body>
{{layout}}
</body>
现在定义全局布局助手:
Handlebars.registerHelper('layout', function(){
if (Template[Session.get('layout')])
return new Handlebars.SafeString(Template[Session.get('layout')]());
});
并在每条路由中设置一个会话变量:
Meteor.Router.add({
'/news': function() {
Session.set('layout', 'classicLayout');
return 'news';
},
});
最后,在你的布局模板中使用{{renderPage}}:
<template name="classicLayout">
<div>
{{renderPage}}
</div>
</template>
【讨论】: