Node.js没有模板引擎

时间:2012-04-10 09:18:01

标签: node.js mongodb express template-engine

我是Node.js的新手并且正在努力学习。根据我的理解,使用模板引擎(例如Jade)是常见的,即使对于CSS(例如,Stylus)也是如此。说实话,我在那里看到的所有教程都涉及到布局时的模板引擎。

问题是我不想使用模板引擎,因为我觉得它不必要地复杂。

Here是指向Node的样板的链接(遗憾的是它由于某种原因不起作用),但是选项1不应该使用任何模板引擎进行布局。

那么,将Node.js和Mongodb与“普通”HTML(5)结合起来的最简单方法是什么?例如,可以使用带节点的HMTL5 Boilerplate吗?

4 个答案:

答案 0 :(得分:9)

如果您使用静态html,那么您不需要在服务器端进行模板化。 您可以使用Express/Connect static middleware轻松提供html文件,例如:

app.use(express.static(__dirname + '/public'));

然后将index.html放到您的公用文件夹中。

此外,我认为您可以将整个h5bp复制并粘贴到您的公共文件夹中,它应该可以正常工作。

答案 1 :(得分:4)

以下是我对此的看法。

如果您只提供静态 html,很明显您不需要任何模板引擎,因为您只需在响应中缓冲html,或使用Connect静态中间件。

但是,当您必须处理动态内容时,事情会变得有趣。

这是模板引擎擅长的地方,因为它们提供了将数据与html集成的方法。如果要替换模板引擎,则需要一个可以执行HTML和DOM操作的库。我可以想到两个选择:

  • jsdom,以及构建在其上的库(例如fill.js) 使用jsdom,您可以使用服务器端jQuery来构建视图,甚至是YUI 但它有一些缺点:
    • 这很慢而且很麻烦
    • 在Windows上安装很痛苦,因为它依赖于本机模块
    • 我无法解析html碎片或不完整的html(也许有人知道解决这个问题的方法)

  • 第二种选择是使用一些处理html的轻量级库,而不使用完整的DOM。到目前为止,我发现了两个擅长这个的库:
    • cheerio - 一个依赖类似jQuery的选择器的小型库
    • plates - 将数据绑定到标记的库

在我看来,两者都非常整洁,是摆脱模板的一个很好的起点:) 可能还有其他人我不知道,但你明白了。

答案 2 :(得分:3)

使用express,您只需在响应中发送html5:

app.get('/', function(req, res){
  res.send('<header>Hello World</header>');
});

但是,我想说在大多数情况下,模板引擎不会增加复杂性。如果要渲染动态内容,关注点的分离会使事情变得更简单。

答案 3 :(得分:2)

第一次回答我自己的问题。我只是想分享一下,我发现了一个从html到jade(模板引擎)的转换器。这绝对是一件好事,至少对我而言,即使它仍然涉及模板引擎,也会消除很多复杂性。

http://html2jade.aaron-powell.com/