我熟悉Angularjs(1.x),并在指令中使用模板。
目前,我正在学习nodejs,并且作为课程的一部分提到了模板引擎。在后端使用它们有什么好处?
目前我看不出任何用途。
我熟悉Angularjs(1.x),并在指令中使用模板。
目前,我正在学习nodejs,并且作为课程的一部分提到了模板引擎。在后端使用它们有什么好处?
目前我看不出任何用途。
如果你有需要转换成HTML的数据(比如从数据库中获取的数据),你可以使用模板引擎将数据和模板结合起来,然后生成HTML文件(最终会传输给客户端)。
如果你的前端应用程序通过XHR调用或类似方法从服务器上获取数据,那么在服务器端渲染HTML通常是没有意义的(相反,数据以JSON格式发送给客户端)。
因此,是否使用模板引擎取决于应用程序(前端和后端)的结构以及具体情况。
也有一些混合解决方案,即通过服务器端渲染初始HTML,然后由客户端接管。例如,React支持这种方案。其主要思想是可以在服务器端和客户端同时使用同一组件,在打开页面时,用户可以看到完全呈现的初始页面(而不是客户端首先从后端检索数据,然后再呈现页面)。
实际上你不需要它们,但它们有许多功能可以使你的页面更加动态。
例如,你可以用这段代码来渲染HTML:
app.get('/',function(req,res){
res.sendFile(path.join(__dirname+'/index.html'));
//__dirname : It will resolve to your project folder.
});
但是使用引擎,您可以将数据发送到模板。 http://expressjs.com/en/api.html#res.render
// pass a variable to the view
res.render('somePage', {
title: 'Awesome title',
userFriends: friendsList,
name: 'loggedUserName'
});
现在前端模板(在这种情况下为EJS)将使用您发送的数据填充HTML。 因此,HTML变得动态,并且您可以使每个页面对每个用户看起来不同。
<ul>
<% for(var i=0; i<userFriends.length; i++) {%>
<li><%= userFriends[i] %></li>
<% } %>
</ul>
只用 HTML 的话,你需要进行很多不必要的 AJAX 调用来获取和添加数据到 HTML 中,这是个不好的主意。即将迎来2020年,模板字面量的本意就是要取代模板引擎。 https://medium.com/@PaulBrowne83/do-we-really-need-template-engines-anymore-214eb6bc112e
<!DOCTYPE html>
<html>
<head>
<title>{{title}}</title>
</head>
<body>
{(userIsSignedIn){<!-- if the user is signed in, display username and description-->
<p>{{username}} is {{description}}</p>
}}
{(!userIsSignedIn){<!--if user isn't signed in, ask them to sign in-->
<p>Sign in to view this page</p>
}}
</body>
</html>