1

私が見つけたすべてのガイドは、以前のバージョンの Express を参照しているようで、この機能が 2.x から 3.x に多少変更されていることを理解しています。現在、バージョン 3.0.3 をインストールしているためnpm install express、3.x は安定しており、本番環境で使用できると見なされていると思います。(そうじゃないの?)

EJS または Kiwi テンプレートを使用したいのですが、可能であれば、テンプレート内からアンダースコアを使用できるようにしたいと考えています。

しかし、私の最初のハードルは、コンテンツ/部分的にレンダリングするレイアウトを取得することです。

与えられた:

$ express --ejs test

index.js:

exports.index = function(req, res){
  res.render('index', { title: 'test' });
};

layout.ejs を作成しましたが、ソースを表示すると、それが呼び出されていないことがわかります。

レイアウトは、Express 3.x で処理するテンプレート ライブラリに完全に渡されましたか (したがって、選択したテンプレート ライブラリがそれらを実装していない場合、あなたは SOL です)。

まだ Express の一部である場合、どのように構成すればよいですか? テンプレート ライブラリで実装する必要がある場合、EJS または Kiwi のドキュメントにレイアウトの説明がありません。まったくサポートされていないということですか?

4

1 に答える 1

1

ejs-locals を使用してレイアウト サポートを取得します (ブロックとパーシャルも提供します)。express 3.x ではレイアウトが削除されているためです。

https://github.com/RandomEtc/ejs-locals

例から node app.js を実行し、localhost:3000 を開いて実際の例を確認します。

テンプレート index.ejs を指定すると、次のようになります。

<% layout('boilerplate') -%>
<% script('foo.js') -%>
<% stylesheet('foo.css') -%>
<h1>I am the <%=what%> template</h1>
<% block('header', "<p>I'm in the header.</p>") -%>
<% block('footer', "<p>I'm in the footer.</p>") -%>

レイアウト、boilerplate.ejs:

<!DOCTYPE html>
<html>
  <head>
    <title>It's <%=who%></title>
    <%-scripts%>
    <%-stylesheets%>
  </head>
  <body>
    <header>
      <%-blocks.header%>
    </header>
    <section>
      <%-body -%>
    </section>
    <footer>
      <%-blocks.footer%>
    </footer>
  </body>
</html>
于 2012-11-17T19:47:12.243 に答える