Meteor 中布局模板的最佳实践?

Posted

技术标签:

【中文标题】Meteor 中布局模板的最佳实践?【英文标题】:Best practice for layout templates in Meteor? 【发布时间】:2013-10-27 19:15:55 【问题描述】:

我使用过的大多数模板系统都有一个主“布局”模板的概念,然后是针对页面细节的专门内容模板。例如,在 expressjs 中,确实有一个与内容分离的布局模板(iirc 与 ejs 或 jam 模板的工作方式相同)。

经验丰富的 Meteor 开发人员会做什么?

【问题讨论】:

【参考方案1】:

有多种选择。

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>

【讨论】:

谢谢!在我准备好重写所有路由之前,我会坚持使用你的路由器版本,它与我实施的 hack 非常相似(但更好)。

以上是关于Meteor 中布局模板的最佳实践?的主要内容,如果未能解决你的问题,请参考以下文章

SVN 布局——最佳实践

Helm(三)—最佳实践

Java 模板引擎中 URL 的最佳实践

Django:URL conf、url 模板标签的最佳实践

在 django 模板中包含 javascript 的最佳实践

移动端布局最佳实践(viewport+rem)