我熟悉Angularjs(1.x)并在指令中使用模板。
目前我正在学习nodejs,并且作为课程模板引擎的一部分被提及。在后端使用它们有什么好处?
目前我看不到任何用途。
答案 0 :(得分:23)
如果您有需要呈现为HTML的数据(例如来自数据库),您可以使用模板引擎获取数据和模板并将其呈现为HTML(随后将其提供给客户端)。 / p>
如果您的前端应用程序执行相同操作,使用XHR调用或类似的东西从服务器检索数据,它通常对呈现给HTML服务器端没有用(相反,数据作为JSON发送到客户端)。
所以这取决于你的应用程序(前端和后端)的结构如果有意义或不使用模板引擎。
还有混合解决方案,其中初始HTML呈现在服务器端,然后客户端接管"。例如,这就是React支持的东西。最重要的是,您可以在服务器和客户端上使用相同的组件,并且当打开页面时,用户将看到完全呈现的初始页面(而不是客户端必须检索首先从后端获取数据,然后再渲染页面。
答案 1 :(得分:8)
你实际上并不需要它们,但它们有很多功能可以使你的页面更具活力......
例如,您可以使用此代码
呈现HTMLapp.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中,这是个坏主意。
希望这有帮助。
答案 2 :(得分:0)
视图引擎允许您使用选项呈现HTML。例如,使用squirrelly,我可以创建一个如下所示的文件:
<!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>
例如,我可以使用Express监听动态用户配置文件URL,然后返回动态内容。
答案 3 :(得分:0)
快到2020年了,模板文字实际上是用来替换模板引擎的。 https://medium.com/@PaulBrowne83/do-we-really-need-template-engines-anymore-214eb6bc112e