非 Jade 节点的模板引擎

Posted

技术标签:

【中文标题】非 Jade 节点的模板引擎【英文标题】:Templating Engine for Node that's NOT 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
);

【问题讨论】:

【参考方案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 语法并注入一些自定义模板方案。

【讨论】:

以上是关于非 Jade 节点的模板引擎的主要内容,如果未能解决你的问题,请参考以下文章

[js高手之路]Node.js模板引擎教程-jade速学与实战2-流程控制,转义与非转义

模板引擎

Jade(Pug) 模板引擎使用文档

模板引擎之-jade

使用 Jade 这样的模板引擎有啥优缺点?

nodejs学习 ---- express中使用模板引擎jade