没有模板引擎的Node.js

4
我刚接触Node.js并正在学习。据我所了解,使用模板引擎(例如Jade)甚至用于CSS(例如Stylus)是很常见的。老实说,在布局方面,我看到的所有教程都涉及到模板引擎。
问题在于,我不想使用模板引擎,因为我认为它们过于复杂。 这里 是一个Node的样板(不幸的是由于某些原因它无法工作),但选项1不应该使用任何模板引擎来进行布局。
那么,将Node.js和Mongodb与“正常”的HTML(5)结合起来的最简单方法是什么?例如,可以使用HTML5 Boilerplate与Node吗?
4个回答

9
如果您正在使用静态 HTML,那么您不需要在服务器端进行模板化。 例如,您可以使用Express/Connect 静态中间件轻松地提供您的 HTML 文件:
app.use(express.static(__dirname + '/public'));

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

4
以下是我的想法。
如果你只提供静态 HTML,显然不需要任何模板引擎,因为你可以在响应中缓冲 HTML,或使用 Connect 静态中间件。
然而,当你需要处理动态内容时,事情变得有趣了。
这就是模板引擎的优点所在,因为它们提供了将数据与 HTML 集成的方法。如果你要替换模板引擎,你需要一个可以进行 HTML 和 DOM 操作的库。我能想到两个替代方案:
  • jsdom和基于它的库(如fill.js
    使用jsdom,您可以使用服务器端jQuery构建视图,甚至YUI
    但是它有一些缺点:
    • 速度慢且笨重
    • 它依赖本机模块,在Windows上安装很麻烦
    • 我无法使其解析html片段或不完整的html(也许有人知道解决方法)

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

在我看来,这两种方法都非常简洁,是摆脱模板的好起点 :)
可能还有其他我不知道的方法,但你能理解我的意思。


3
使用express,你只需在响应中发送HTML5:
app.get('/', function(req, res){
  res.send('<header>Hello World</header>');
});

然而,我认为在大部分情况下,模板引擎并不会增加复杂度。如果你需要渲染动态内容,关注点分离会让事情更简单。


那么我需要将所有的HTML5嵌入响应中吗?这是唯一的方法吗?我希望能够将服务器代码与客户端代码分开。 - holyredbeard
4
这就是模板引擎存在的意义 ;) - DanS

2

第一次回答自己的问题。我想分享一个将HTML转为Jade模板引擎的转换器。这绝对是一个很好的事情,至少对我来说,它消除了很多复杂性,即使它仍然涉及到一个模板引擎。

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


请查看Jade文档:http://jade-lang.com/ 学习语法不需要太长时间。 - DanS
对于像我这样的新手,Jade已经更名为“pug”:https://www.npmjs.com/package/pug - Daniel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接