【问题标题】:Rendering layout with ejs使用 ejs 渲染布局
【发布时间】:2012-10-21 14:06:53
【问题描述】:

我无法用 ejs 渲染布局,表达:

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 但它在布局中 NOT:

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>

【问题讨论】:

  • 请在此处显示您的网址和路由器代码!

标签: node.js express ejs


【解决方案1】:

我改用 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>

【讨论】:

  • ejs-locals 现在不维护了!还有其他建议吗?
  • 虽然不理想,但这些似乎是最可行的替代品:ejs-mate 和 express-ejs-layouts。 ejs-mate 是一个分支,具有更多功能,但自 2015 年 8 月以来没有更新。
【解决方案2】:

在express 3中,需要单独添加partial和layout support,express-partials

npm install express-partials

【讨论】:

    猜你喜欢
    • 2011-05-17
    • 1970-01-01
    • 1970-01-01
    • 2018-12-26
    • 1970-01-01
    • 2018-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多