0

ejs、expressでレイアウトをレンダリングできません:

app.configure(function () {
    app.use(express.static(__dirname + '/public'));
    app.use(express.basicAuth('username', 'password'));
    app.set('views', __dirname + '/views');
    app.set('view engine', 'ejs');
});

layout.ejsは/viewsフォルダーにあります。/views/home/index.ejsをレンダリングしましたが、レイアウトにありません

res.render('home/index');

layout.ejs:

<html>
  <head>
    <title></title>
      <script type="text/javascript" src="/content/scripts/jquery-1.6.2.min.js"></script>
      <script type="text/javascript" src="/content/scripts/jquery-ui-1.8.11.min.js"></script>
      <script type="text/javascript" src="/content/scripts/jquery.unobtrusive-ajax.min.js"></script>
      <script type="text/javascript" src="/content/scripts/jquery.validate.min.js"></script>
      <script type="text/javascript" src="/content/scripts/jquery.validate.unobtrusive.min.js"></script>
      <script type="text/javascript" src="/socket.io/socket.io.js"></script>
      <link rel="stylesheet" type="text/css" href="/content/styles/site.css" />
      <link rel="stylesheet" type="text/css" href="/content/styles/themes/base/jquery.ui.all.css"/>
  </head>
  <body>
      <%- body %>
  </body>
</html>
4

2 に答える 2

12

代わりにejs-localsを使用します。これはejs-partialsのフォークですが、積極的に保守されています。

npm install ejs-locals

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

<% 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-10-21T18:58:27.730 に答える
5

Express 3では、 Express-Partialsを使用して部分サポートとレイアウトサポートを個別に追加する必要があります

npm install express-partials
于 2012-10-21T16:17:16.933 に答える