express + jade:提供的局部variables在视图中是未定义的(node.js + express + jade)

我正在使用node.js实现一个webapp,并使用jade模板引擎来expression。

模板渲染良好,可以访问帮助器和dynamic帮助器,但除了由“express”提供的“body”局部variables以外,局部variables不在我的layout.jade中可用和定义的位置。

这是一些代码:

app.set ('view engine', 'jade'); app.get ("/test", function (req, res) { res.render ('test', { locals: { name: "jake" } }); }); 

这是test.jade:

 p hello =name 

当我删除第二行(引用名称),模板呈现正确,在网页中显示单词“你好”。 当我包含= name时,会抛出一个ReferenceError:

 500 ReferenceError: Jade:2 NaN. 'p hello' NaN. '=name' name is not defined NaN. 'p hello' NaN. '=name' 

我相信我会跟随玉石,并且就局部variables而言精确地expression例子。 我做错了什么,或者这可能是快递或玉器的错误?

 app.set ('view engine', 'jade'); app.get ("/test", function (req, res) { res.render ('test', { name: "jake" }); }); 

你可以这样做。

而不是=,你可以使用#{variable-name}。 这里是我如何使用它的一个例子:这将呈现一个页面,一个导航菜单。 每当页面加载时传递页面标题,当然你需要为每个页面创build一个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 

我认为这个错误是由于favicon.ico浏览器的请求而引起的。

尝试将这些行添加到layout.jade头以链接图标

 link(rel='icon', href='/images/siteicon.png') 

这删除了我得到的同样的错误