【问题标题】:Is it a good idea to mix Moustache/Handlebars Templating with HAML?将 Moustache/Handlebars 模板与 HAML 混合是个好主意吗?
【发布时间】:2012-03-20 17:56:12
【问题描述】:

我想知道将 Mustache 或 Handlebars 模板与 HAML 混合是否是个好主意。如果是,有什么好处和坏处。我为什么要问这个?我见过 brogrammers 混合模板。谢谢。

【问题讨论】:

    标签: javascript haml template-engine mustache handlebars.js


    【解决方案1】:

    我正在使用 HAML 生成胡须模板,没有任何问题。

    我的 HAML 看起来有点像这样:

    .template.shop
      .foreground
        .header
          .header-logo
        .shop-description
          .table-frame
            %a.close-button{:href=>"#"} Close
            %table
              %tr
                %td.shop-images
                %td.shop-details
                  %p.popup-headline.fix-width
                    {{addr_name}}
                  %p
                    {{addr_street}} {{addr_number}}
                    %br/
                    {{addr_zip}} {{addr_city}}
                  / {{#hasSchedule}}
                  %p.popup-headline
                    \Öffnungszeiten
                  %table.shop-schedule
                    / {{#sched_mo}}
                    %tr
                      %td Mo:
                      %td {{sched_mo}}
                    / {{/sched_mo}}
    
                    ... Rest of Table omitted
    

    这就像一个魅力。它在服务器上呈现为 HTML,我在客户端使用 jQuery 从页面中提取。然后我获取模板的 HTML 并使用 mustache 渲染它。

    因此,您有时需要小心出现小胡子标签的位置。对于浏览器,它们只是文本,因此例如在表格行之间它们是无效的。在这种情况下,将它们放在 HTML-cmets 中,就像我的示例一样。

    您也可以在服务器上转义生成的 HTML/Mustache。这在我的情况下是不可行的,因为我希望将生成的模板部分包含在我的 HTML 中以便于样式化。

    【讨论】:

    • 我想如果你把生成的代码放在一个浏览器无法识别的类型的脚本标签中,例如type="text/x-handlebars-template",浏览器不会乱来的“无效” HTML(例如,表格行之间的标签),因此您不必担心将它们放入 HTML-cmets
    • 是的,这也可以。您还可以(在服务器上)渲染成一个字符串并将该字符串放入 Javascript 的某个地方。就我而言,我明确希望/需要它成为 DOM 的一部分,以便于开发。
    • 实际上我认为这行不通,因为 HAML 很聪明,不会生成无效的 HTML。因此,例如,如果您将它们放在 TR 周围,它会提取文本字符串并将它们放在表格之前。在我找到这篇文章之前,我不知道评论黑客,它完美无缺,所以谢谢 Jan。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-08
    • 1970-01-01
    • 2013-10-20
    • 1970-01-01
    • 2010-12-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多