非 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 节点的模板引擎的主要内容,如果未能解决你的问题,请参考以下文章