Expressアプリでは、ビューエンジンをejsに変更しました。
ビューテンプレートを利用できるかどうか誰かが知っていますか?
実際、Express 3.Xがlayout.ejsをサポートしていない場合、レイアウトを使用する場合は、次の手順を自分で行う必要があります。
package.jsonます 「依存関係」:{
「エクスプレス」:「3.1.0」、
"ejs": "*"、
"express-partials": "*"
}
npm installの最新バージョンをインストールするために実行しますexpress-partialsexpress-partialsあなたに必要app.jsvar partials = require('express-partials');app.use(partials());の下にコードを追加しますapp.set('view engine', 'ejs');app.jsその後、あなたはあなたをデザインし、あなたのファイルにブロックlayout.ejsを追加することができます、そしてそれは十分でうまく機能しています。<%- body%>layout.ejs
このモジュールでそれを行うことができます...
https://github.com/aseemk/express-blocks
レイアウト.ejs
<html>
<body>
<% include nav %>
<h1><%= title %></h1>
<%- body %>
</body>
</html>
login.ejs
<% layout('layout') -%>
<form>...</form>
nav.ejs
<nav>
<% if ( session.logged_in ) { %>
<a href="/account">account</a>
<a href="/logout">logout</a>
<% } else { %>
<a href="/signup">signup</a>
<a href="/login">login</a>
<% } %>
<a href="/">home</a>
</nav>
私はエクスプレス パーシャルを使用していましたが、ejs とエクスプレス 3.x にはエクスプレス ブロックの方が優れていることがわかりました。パーシャルを使用するのは、毎回データを渡さなければならないのが苦痛でした。<% include whatever %>データはすでにアクセス可能です。
ルート ファイルでは、次のようにレンダリングできます。
exports.login.get = function(req, res){
res.locals.session = req.session;
res.render('login', { title: 'Login to your account' });
};
私の記憶が正しければ、Express.js はそれをテンプレート エンジンに任せます。したがって、ejs がレイアウトをサポートしていない場合は、うまくいきません。