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

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

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

【问题讨论】:

    标签: templates 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 非常相似(但更好)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-10
    相关资源
    最近更新 更多