我正在使用node.js实现一个webapp并使用jade模板引擎表达。
模板呈现正常,可以访问助手和动态助手,但不能访问“body”局部变量以外的局部变量,该变量由express提供,并且在layout.jade中可用并定义。
这是一些代码:
app.set ('view engine', 'jade');
app.get ("/test", function (req, res) {
res.render ('test', {
locals: { name: "jake" }
});
});
这是test.jade:
p hello
=name
当我删除第二行(引用名称)时,模板正确呈现,在网页中显示“hello”一词。当我包含= name时,它会抛出一个ReferenceError:
500 ReferenceError: Jade:2 NaN. 'p hello' NaN. '=name' name is not defined
NaN. 'p hello'
NaN. '=name'
我相信我正在追踪玉石并完全表达与局部变量有关的例子。我做错了什么,或者这可能是快递或玉器中的错误?
答案 0 :(得分:7)
app.set ('view engine', 'jade');
app.get ("/test", function (req, res) {
res.render ('test', {
name: "jake"
});
});
你可以这样做。
答案 1 :(得分:3)
而不是=,您可以使用#{variable-name}。这是我如何使用它的一个例子: 这将呈现一个页面,带有导航菜单。在每次加载页面时传递页面标题,当然你需要为每个页面创建一个app.get函数。
<强> App.js 强>
var navigation = {
home : {
uri : "/",
url : "index",
title : "Home"
},
lab : {
uri : "/lab",
url : "lab",
title : "Lab"
},
profile : {
uri : "/profile",
url : "profile",
title : "Profile"
},
timetable : {
uri : "/timetable",
url : "timetable",
title : "Timetable"
}
}
app.get(navigation.profile.uri, function(req, res){ //Profile
res.render(navigation.profile.url, {
title: navigation.profile.title,
navigation: navigation
});
});
<强> profile.jade 强>
section#page-content
h1#page-title #{title}
p Welcome to #{title}
<强> layout.jade 强>
!!! 5
html
head
title= title
link(rel='stylesheet', href='/stylesheets/reset.css')
link(rel='stylesheet', href='/stylesheets/style.css')
body
header#site-header
nav#site-navigation
!= partial("partials/navigation")
section!= body
footer#page-footer
答案 2 :(得分:2)
我认为错误有时是由浏览器对favicon.ico的请求引起的。
尝试将这些行添加到layout.jade头以链接图标
link(rel='icon', href='/images/siteicon.png')
这删除了我遇到的同样错误