2012-06-08 77 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