sendFile(' /index.html')和渲染('索引')之间的差异来自Jade

时间:2015-04-23 14:51:31

标签: html node.js templates express pug

我是JS的新人。我发现了similar question,但在其他意义上。我的问题是:作为响应发送行html的模板Jade on Express的差异或发生的是什么。我的意思是:为什么我在Express上使用模板Jade:

app.set('view engine', 'jade');
app.get('/', function (request, response) {
   response.render('index');});

如果我可以直接发送html文件作为回复:

app.get('/', function (request, response) {
   response.set('Content-Type', 'text/html');
   response.sendFile('/index.html');});

为什么我会花时间处理渲染并发送一个直接发送html文件的Jade文件。

谢谢!。

2 个答案:

答案 0 :(得分:1)

Jade模板允许您创建动态HTML。 (例如,您可以在Jade中使用if语句根据某些逻辑呈现不同的HTML标记)。此外,您可以将服务器中的值插入模板(例如,当前登录用户的名称)。

与静态html文件相反,在哪里有动态内容,您需要使用JavaScript,并且要访问服务器变量,您需要将AJAX请求发送到服务器并解析响应。

答案 1 :(得分:0)

因为通过每次请求动态编译Jade视图,您可以使用服务器端值扩充模板。

var jade = require('jade');
var html = jade.render('h1 #{someVar}', { someVar: 'Hi there!' });
console.log(html); // "<h1>Hi there!</h1>"

生成的HTML会在您呈现模板时根据someVar的值进行更改。如果您只是发送静态HTML文件,则无法方便地将数据插入模板。也就是说,随着Angular和其他前端框架变得如此受欢迎,并不需要在服务器上增加模板。

随着单页应用程序的出现,在您编译应用程序时,提前渲染所有玉石模板通常更有意义。大多数人使用GruntGulp执行此操作。