我是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文件。
谢谢!。
答案 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和其他前端框架变得如此受欢迎,并不需要在服务器上增加模板。
随着单页应用程序的出现,在您编译应用程序时,提前渲染所有玉石模板通常更有意义。大多数人使用Grunt或Gulp执行此操作。