用布局模板表达js - ejs

时间:2012-06-08 04:16:46

标签: express ejs

在我的快递应用中, 我已将视图引擎更改为ejs。

有谁知道是否仍然可以利用视图模板?

3 个答案:

答案 0 :(得分:8)

实际上在Express 3.X不支持layout.ejs之后,如果你想使用布局,下面的步骤应由你自己完成:

  1. 在您package.json档案
  2. 中添加依赖“express-partials”:“*”
         "dependencies": {
           "express": "3.1.0",
           "ejs": "*",
           "express-partials": "*"
         }
    
    1. 执行npm install以安装最新版本的express-partials
    2. express-partials中需要app.js var partials = require('express-partials');
    3. app.use(partials());文件
    4. 中的app.set('view engine', 'ejs');下添加代码app.js

      之后,您可以设计layout.ejs并在<%- body%>文件中添加layout.ejs块,这就足够了并且运作良好。

答案 1 :(得分:6)

你可以使用这个模块......

https://github.com/aseemk/express-blocks

layout.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>

我正在使用express-partials,但我发现表达式块更适合ejs并表达3.x.使用partials是每次都必须传递数据的痛苦。使用<% include whatever %>数据已经可以访问。

在路线文件中,您可以这样渲染:

exports.login.get = function(req, res){
  res.locals.session = req.session;
  res.render('login', { title: 'Login to your account' });
};

答案 2 :(得分:3)

如果我没记错的话,Express.js会将其留给模板引擎。因此,如果ejs不支持布局,那么你就不走运了。