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'
});
そして今、フロントエンドテンプレート(この場合はEJB)に、送信したデータを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
ビューエンジンを使用すると、オプションを使用して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を聞いてから、動的コンテンツを返すことができます。