4

我是 Node.js 的新手,正在努力学习。据我了解,使用模板引擎(例如 Jade)是很常见的,即使对于 CSS(例如 Stylus)也是如此。老实说,我看到的所有教程在布局方面都涉及模板引擎。

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

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

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

4

4 回答 4

9

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

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

然后放入index.html您的公用文件夹。

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

于 2012-04-10T09:33:35.573 回答
4

以下是我对此的看法。

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

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

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

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

  • 第二种选择是使用一些处理 html 的轻量级库,而不需要完整的 DOM。到目前为止,我已经找到了两个擅长于此的库:
    • Cheerio - 一个依赖于类 jQuery 选择器的小型库
    • - 将数据绑定到标记的库

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

于 2012-04-11T21:09:42.373 回答
3

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

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

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

于 2012-04-10T09:36:26.860 回答
2

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

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

于 2012-04-10T10:25:50.690 回答