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')
这删除了我得到的同样的错误