2012-06-08 43 views

回答

3

如果我没有记错的话,Express.js会留下模板引擎。所以如果ejs不支持布局,那么你运气不好。

+0

它据说支持根据Express的文档布局,但我还没有得到它正常工作。 –

+0

3.x删除了布局。网站上的指南是2.x. – Pickels

+0

您可以使用ejs-locals来定义布局。 – aredridel

5

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

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,但是我发现Express-blocks对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' }); 
}; 
9

其实后快递3.X不支持layout.ejs,如果你想使用的布局,下面的步骤应该由自己来完成:

  1. 附加依赖​​ “快车谐音”: “*” 在你package.json文件
 
    "dependencies": { 
     "express": "3.1.0", 
     "ejs": "*", 
     "express-partials": "*" 
    } 
  1. 执行npm installapp.js
    var partials = require('express-partials');
  2. 添加代码app.use(partials());安装app.set('view engine', 'ejs');app.js文件

后下express-partials最新版本

  • 需要express-partials,你可以设计你layout.ejs并在您的layout.ejs文件中添加<%- body%>块,这就够了,我们很好。

  • +0

    好人........ – 2014-08-14 21:24:55