Expressアプリでは、ビューエンジンをejsに変更しました。
ビューテンプレートを利用できるかどうか誰かが知っていますか?
実際、Express 3.Xがlayout.ejsをサポートしていない場合、レイアウトを使用する場合は、次の手順を自分で行う必要があります。
package.json
ます「依存関係」:{ 「エクスプレス」:「3.1.0」、 "ejs": "*"、 "express-partials": "*" }
npm install
の最新バージョンをインストールするために実行しますexpress-partials
express-partials
あなたに必要app.js
var 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 がレイアウトをサポートしていない場合は、うまくいきません。