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

我是JS新手。 我发现了一个类似的问题,但在其他方面。 我的问题是:在发送行html作为响应的模板Jade 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');}); 

为什么我会花费时间和处理渲染,并发送一个Jade文件直接发送一个HTML文件。

谢谢!。

因为通过每个请求即时编译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和其他前端框架变得如此stream行的情况下,并不需要增加服务器上的模板。

随着单页面应用程序的出现,在编译应用程序时提前渲染所有的jade模板通常更有意义。 大多数人用Grunt或Gulp来做到这一点。

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

与静态HTML文件相反,在哪里有dynamic内容,您将需要使用JavaScript,并有权访问服务器variables,您需要将AJAX请求发送到服务器并parsing响应。