12

Expressアプリでは、ビューエンジンをejsに変更しました。

ビューテンプレートを利用できるかどうか誰かが知っていますか?

4

4 に答える 4

10

実際、Express 3.Xがlayout.ejsをサポートしていない場合、レイアウトを使用する場合は、次の手順を自分で行う必要があります。

  1. ファイルに依存関係"express-partials":"*"を追加しpackage.jsonます
     「依存関係」:{
       「エクスプレス」:「3.1.0」、
       "ejs": "*"、
       "express-partials": "*"
     }
  1. npm installの最新バージョンをインストールするために実行しますexpress-partials
  2. express-partialsあなたに必要app.js
    var partials = require('express-partials');
  3. inファイルapp.use(partials());の下にコードを追加しますapp.set('view engine', 'ejs');app.js

その後、あなたはあなたをデザインし、あなたのファイルにブロックlayout.ejsを追加することができます、そしてそれは十分でうまく機能しています。<%- body%>layout.ejs

于 2013-01-28T13:45:25.443 に答える
8

このモジュールでそれを行うことができます...

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' });
};
于 2012-09-22T22:10:43.250 に答える
4

私の記憶が正しければ、Express.js はそれをテンプレート エンジンに任せます。したがって、ejs がレイアウトをサポートしていない場合は、うまくいきません。

于 2012-06-08T09:33:57.600 に答える