我正在尝试用Node.js创建一个简单的服务器,它使用Jade模板和布局。由于某些原因,它只会加载模板,而不会加载布局。
下面是我得到的信息:
main.js
var express = require('express');
var app = express.createServer();
app.set('views', __dirname + '/views');
app.set('view engine','jade');
app.set('view options', {
layout: true
});
app.get('/', function(req,res) {
res.render('index', { title: 'My site' });
});
app.listen(4000);
正如您所看到的,布局已启用。我尝试过在render方法中直接引用它,但这并没有什么不同。值得注意的是,“标题:‘我的网站’”也不起作用。
index.jade
h2 Hello!
p I really hope this is working now
lo.jade
!!! 5
html
head
title Why won't this work
body
h1 I AM A LAYOUT
div= body
这是我的npm list
├─┬ express@3.0.0alpha1
│ ├── commander@0.5.2
│ ├─┬ connect@2.1.2
│ │ ├── crc@0.1.0
│ │ ├── formidable@1.0.9
│ │ ├── mime@1.2.4
│ │ └── qs@0.4.2
│ ├── debug@0.6.0
│ ├── mime@1.2.5
│ └── mkdirp@0.3.1
└─┬ jade@0.24.0
├── commander@0.5.2
└── mkdirp@0.3.0
有什么办法解释为什么这个不起作用吗?
发布于 2012-04-18 06:01:32
我认为你做布局的方式是错误的。我这样做:
我将布局设置为false:
app.set('view options', {
layout: false
});
在layout.jade文件中:
doctype 5
html(lang="en")
head
title MySite #{title}
body
block mainContent
在呈现的页面(假设是: home.jade)中,包含一个变量(content)
extends layout
block mainContent
h1 This is home
p= content
您可以有另一个基于(扩展)具有不同变量(用户)的相同布局(other.jade)的页面
extends layout
block mainContent
h1 Oh look ! Another page
p= user
像这样叫他们:
app.get('/', function(req, res) {
res.render('home', {
title : "Home",
content: "Some Home page content"
});
});
app.get('/anotherPage', function(req, res) {
res.render('other', {
title : "Other page",
user: "Here goes a user name"
});
});
发布于 2012-04-20 03:47:32
这似乎是对Express/jade最新版本的更改。
Express: '3.0.0alpha1': '2012-04-18T22:47:46.812Z'
Jade: '0.25.0': '2012-04-18T22:40:01.162Z'
我也被抓到了!
其他几件事也发生了变化--我花了一段时间才弄明白。
不幸的是,Express & Jade并没有特别好的文档记录,而且您在web上找到的许多示例都过时了。
Arnaud现在提供了使用布局的新方法。我不知道老方法是否有效。当然,当我尝试像dtyon这样的东西时,它似乎不再起作用。
因此,请使用以下命令检查您安装的Express & Jade的版本:
npm show express dist.tarball
npm show jade dist.tarball
希望这能有所帮助。J.
发布于 2012-04-18 05:34:56
据我所知,默认情况下布局文件应该命名为'layout.jade‘。但是,如果你想要一个不同的名字,你可以在渲染时使用“layout”提示选项:
res.render('index', { layout: 'lo', title: 'My site' });
我还假设lo.jade布局文件位于根目录/views/
中。
https://stackoverflow.com/questions/10199415
复制相似问题