4

ejs の代わりに html ファイルを使用していますが、エクスプレス エンジンは ejs です。

views
|
|--header.html
|--footer.html
|
|--index.html

私は次のように構成しました

app.set('views', __dirname + '/views');
app.engine('html', require('ejs').renderFile);  

index私はこれで私のテンプレートをレンダリングします:

res.render('index.html', {title: 'test'});

しかし、どうすればheaderとfooter.htmlをindex.htmlに含めることができますか

Node.js エクスプレス: ejs テンプレートについて混乱する

機能していない既存の例 https://github.com/visionmedia/express/tree/master/examples/ejs

4

1 に答える 1

6

あなたが求めた元の方法は、パーシャルを使用することです。パーシャルはその後削除され、includeEJS の機能に置き換えられました。ファイルを含める方法は次のとおりです。

<% include header.html %>
<% include footer.html %>

レンダリングされたページに渡すすべてのローカルもインクルードに渡されます。例えば:

app.js

app.get('/', function(req, res) {
  res.render(__dirname + '/index.html', {
    string: 'random_value',
    other: 'value'
  });
});

index.html

<!DOCTYPE html>
<body>
  <%= other %>
  <% include content.html %>
</body>

content.html

<pre><%= string %></pre>

得られる結果の HTML は次のとおりです。

<!DOCTYPE html>
<body>
  value
  <pre>random_value</pre>
</body>
于 2013-09-12T00:52:32.863 に答える