表示未find/使用布局

我试图使用快递和呈现layout.jade我的目录树是非常标准的。

├── apps │  └── fridge_face │  ├── routes.coffee │  └── views | └── index.jade ├── server.js └── views ├── layout.jade └── stylesheets └── style.styl 

在我routes.coffee当我渲染index.jade一切单词好,但布局不渲染。 我已经尝试将布局移动到apps/fridge_face/views/但是这并不成功。

我没有做布局configuration。

这是我的

layout.jade

 doctype 5 html head title 'What is up' link(rel='stylesheet', href='/stylesheets/style.css') body != body 

routes.coffee

 routes = (app) -> app.get '/', (req, res) -> Word.once 'wordsFetched', (params) -> res.render "#{__dirname}/views/index", layout: true words: params.map (word) -> word.word Word.getWords() module.exports = routes 

server.jsconfiguration

 app.configure(function(){ app.set('port', process.env.PORT || 3000); app.set('views', __dirname + '/views'); app.set('view engine', 'jade'); app.use(express.favicon()); app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(app.router); app.use(express['static'](__dirname + '/public')); }); 

正如你可以看到没有什么可以或将使布局不渲染…我在做什么错我怎么快速find我的布局

编辑


我知道我这个问题超长,但增加了一些发展。 第一

当我从两个目录中的布局中删除!= ,没有任何变化。 我的观点仍然是免费的布局。

当我添加

 app.set('view options', { layout: false }); 

然后用我的视图明确地呈现我的布局

 layout: "#{__dirname}/views/layout" # OR layout: "layout" # OR layout: true 

没有任何反应,视图呈现布局免费…

您正在使用新的快速版本过时的代码。 有关模板系统的新用法,请参阅http://github.com/visionmedia/jade

正如上面的人所说,你使用3.0版本,摆脱了布局和偏见,让模板引擎处理。 这是通过迁移wiki的答案:

“要使用EJS取回布局function,您可以使用express-partials或ejs-locals。”

(从https://github.com/visionmedia/express/wiki/Migrating-from-2.x-to-3.x

我最终使用了express-partials,它的工作原理和他们的例子完全一样。 我无法发布到ejs-locals的链接,因为我没有足够的声望,但你可以在维基上find它。

当您调用render时,请尝试明确指定布局文件的path。 快速文档中有一个例子:

 res.render('page', { layout: __dirname + '/../../mylayout.jade' }); 

我猜是在express / jade中有不同的逻辑,取决于视图名称是不是合格的,还是指定为文件系统path。

如果布局不起作用,你可以尝试一下,我使用ejs:

 app.get('/', function(req,res){ res.render('layout.ejs', { layout:false, locals : { body: '../apps/index.ejs' , name : "Daniel" }}); }); 

在layout.ejs中:

 <html> ... <%-partial(body)%> <html> 

在index.ejs中:

 <h1>Hola</h1> <%=name%>