Jade中的sendFile(';/index.html';)和render(';index';)之间的差异

Jade中的sendFile(';/index.html';)和render(';index';)之间的差异,html,node.js,templates,express,pug,Html,Node.js,Templates,Express,Pug,我是JS的新手。我已经找到了一个答案,但在另一个意义上。我的问题是:与发送行html作为响应相比,Express上的模板Jade有什么区别。我的意思是:为什么我要在Express上使用模板: app.set('view engine', 'jade'); app.get('/', function (request, response) { response.render('index');}); 如果我可以直接发送html文件作为响应: app.get('/', function (r

我是JS的新手。我已经找到了一个答案,但在另一个意义上。我的问题是:与发送行html作为响应相比,Express上的模板Jade有什么区别。我的意思是:为什么我要在Express上使用模板:

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');});
为什么我要花时间处理渲染和发送Jade文件,而不是直接发送html文件


谢谢你

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


与静态html文件不同,在静态html文件中,要包含动态内容,您需要使用JavaScript;要访问服务器变量,您需要向服务器发送AJAX请求并解析响应

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

var jade = require('jade');
var html = jade.render('h1 #{someVar}', { someVar: 'Hi there!' });
console.log(html); // "<h1>Hi there!</h1>"
var jade=require('jade');
var html=jade.render('h1#{someVar}',{someVar:'Hi there!'});
console.log(html);//“你好!”
生成的HTML将根据呈现模板时
someVar
的值进行更改。如果您只是发送静态HTML文件,那么您就无法方便地将数据插入到模板中。这就是说,随着Angular和其他前端框架变得如此流行,不再需要在服务器上增加模板

随着单页应用程序的出现,在编译应用程序时提前呈现所有jade模板通常更有意义。大多数人都是用或