我只需要使用快速渲染的模板语言?

我学习的节点和最简单的expression,当使用res.render('view',{data:data})呈现视图时res.render('view',{data:data})它只是一个模板引擎,如适合在视图中的玉。 我可以不使用正常的HTML?

你可以,但这是我在学习Node时碰到的一个问题。 如果你不想使用模板引擎,你仍然可以让Node以静态方式吐出HTML文件的内容。 例如(非常基本的例子):

 var base = '/path/to/your/public_html', fs = require('fs'), http = require('http'), sys = requrie('sys'); http.createServer(function (req,res) { path = base + req.url; console.log(path); path.exists(path, function(exists) { if(!exists) { res.writeHead(404); res.write('Bad request: 404\n'); res.end(); } else { res.setHeader('Content-Type','text/html'); res.statusCode = 200; var file = fs.createReadStream(path); file.on("open",function() { file.pipe(res); }); file.on("error",function(err) { console.log(err); }); } }); }).listen(80); console.log('server on tcp/80'); 

关于Node的好处在于,它迫使你将模板从逻辑中分离出来(到了一定的层次,无论如何都可以将大量的逻辑压入模板中)。

我不喜欢Jade,并使用EJS,直到事实certificate,客户端EJS是不同的服务器端,你不能真正在浏览器中重新使用模板(正如你肯定会想在某些时候,当你开始渲染页面在浏览器中)。 您可以重新使用简单的EJS模板,但不能重复使用具有部分的模板(因为大部分模板都是)。

经过大量的search和反复试验,我最终使用了速度非常快(实际上速度最快)的doT模板,轻量级(只有140行JavaScript),可以很容易地集成到Express中巩固的模式 – 你不能直接用doT来合并),可以在浏览器中使用(加载partials的函数将不得不不同,但又很容易)。

doT似乎具有我在其他模板引擎中没有看到的function,它有一个非常优雅的语法,最接近句柄(我最喜欢的),但仍然允许正常的JavaScript内部(这就是为什么我selectEJS的原因)。