【问题标题】:Templating Engine for Node that's NOT Jade非 Jade 节点的模板引擎
【发布时间】:2011-11-14 14:27:25
【问题描述】:

Jade 确实很整洁,但我个人不喜欢它的语法和外观。是的,能写就行了:

body
  h1 Hello
  p This is 
    b bold

这很酷,但我仍然更喜欢 HTML/XML 的外观和感觉。它是为人类和机器可读而设计的,总的来说,我认为它更容易浏览和理解。

是否有任何模板引擎更像:

<body>
  <h1>{title}</h1>
  <p>{content}</p>
</body>

使用与 Jade 相同的概念:

res.render('index', {
  title:pageTitle,
  content:pageContent
});

【问题讨论】:

    标签: javascript html templates node.js pug


    【解决方案1】:

    看看EJS。允许您使用常规 HTML 并嵌入 Javascript 代码。

    例如:

    <div>
    <% if (foo) { %>
    foo
    <% }else { %>
    bar
    <% } %>
    </div>
    

    此外,您正在寻找的是“与 Express 兼容”的模板引擎,而 EJS 与 Express 兼容。它是由 Express 背后的主要人物之一制作的。

    【讨论】:

      【解决方案2】:

      你可以在 Jade 中直接使用 HTML,试试这个:

      <body>
        <h1>#{title}</h1>
        <p>#{content}</p>
      </body>
      

      【讨论】:

        【解决方案3】:

        对于 Node.js,具体看起来像这样的东西可能是 Mustache。检查demo

        【讨论】:

        • 另外,Handlebars。类似于 Mustache 的语法,但功能更强大。
        • 到目前为止我很喜欢这个。下面有人说您可以将 Jade 与 HTML 一起使用。所以也检查一下。
        • 我第二个把手。它建立在 Mustache 之上,但在我看来,添加助手是不可替代的。
        【解决方案4】:

        考虑jQuery templates。您可以提供 JSON 格式的数据并将其应用于模板。

        【讨论】:

          【解决方案5】:

          如果你已经在使用underscore.js

          var compiled = _.template("hello: <%= name %>");
          compiled({name : 'moe'});
          => "hello: moe"
          

          【讨论】:

            【解决方案6】:

            模板可能只是个人喜好问题。我也不喜欢 Jade,而偏爱 HTML 是一个更好的选择。 大多数情况下,网页设计布局无法轻松转换为这些模板。

            样品提供的小胡子:

            <h1>{{header}}</h1>
            {{#bug}}
            {{/bug}}
            
            {{#items}}
              {{#first}}
                <li><strong>{{name}}</strong></li>
              {{/first}}
              {{#link}}
                <li><a href="{{url}}">{{name}}</a></li>
              {{/link}}
            {{/items}}
            
            {{#empty}}
              <p>The list is empty.</p>
            {{/empty}}
            

            它可以与 Angular.js 语法混合使用...对于使用它的人来说可能是个问题。

            【讨论】:

              【解决方案7】:

              我推荐一个新的模板引擎:Saker,它支持流畅的编码工作流程,与大多数模板语法不同,您无需中断编码即可在 HTML 中明确表示服务器块。
              Github:https://github.com/eshengsky/saker

              代码如下:

              <body>
                  <h1>@title</h1>
                  <p>@content</p>
              </body>
              

              【讨论】:

                【解决方案8】:

                我个人在我所有的 Node JS 项目中使用 Nunjucks 已经有几年了,并且仍然喜欢它。我从 Swig 切换到了 Swig,因为当项目变得更加复杂时,Swig 缺乏一些可扩展性。

                我也不是 Jade / Pug 的粉丝。我更喜欢普通的 HTML 语法并注入一些自定义模板方案。

                【讨论】:

                  猜你喜欢
                  • 2013-07-22
                  • 1970-01-01
                  • 2013-03-14
                  • 2011-06-26
                  • 2017-12-21
                  • 2012-09-04
                  • 2011-11-16
                  • 1970-01-01
                  • 2021-11-05
                  相关资源
                  最近更新 更多