繁体   English   中英

Node.js 没有模板引擎

[英]Node.js without a template engine

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

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

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

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

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

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

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

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

这是我对此的看法。

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

然而,当您必须处理动态内容时,事情就会变得有趣起来。

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

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

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

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM