表示未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%>