2013-06-19 76 views
1

我正在通过Sams“Node.js在24小时内”工作。第8章给我带来困难(超过一个小时)!示例07允许程序员创建一个页面,用户可以创建一个存储在MongoDb中的任务列表。代码使用Express和Jade。按照指示一切正常......除了我注意到'标题'不是渲染,而是我得到一个通用的标题,路线的目录路径。我的问题是为什么?我认为我正确使用res.render,Jade索引/布局文件与作者同意(选中https://github.com/shapeshed/nodejsbook.io)。Nodejs/Express - 'title'not rendering

更新:由于它看起来像layout.jade被忽略,我删除它。没有错误导致问题依然存在。为什么/如何忽略layout.jade?

**结论**:“24小时内的Node.js”假设为Express 2.继本书的安装说明后,将安装Express 3,因此存在困难(下面的补救措施)。请注意,本书的第8章介绍了耦合Node.js/Mongodb/Jade/Flash,仅仅介绍了Jade的最简单介绍(第6章),而没有介绍Flash。除非您已经是一位经验丰富的前端开发人员,否则需要一个多小时。

目录结构:

\connect_to_mongo 
| 
|- \node_modules 
|- \public 
|- \routes 
|- \views 
| |- \tasks 
| | |- index.jade 
| | |- new.jade 
| |- index.jade 
| |- layout.jade 
|- app.js 
|- package.json 

app.js包含:

app.get('/tasks/new', function(req,res) { 
    Task.find({}, function(err,docs) { 
     res.render('tasks/new.jade', { 
      title:'New Tasks' 
     }); 
    }); 
}); 

layout.jade是:

!!! 
html 
    head 
    title #{title} 
    link(rel='stylesheet', href='http://twitter.github.com/bootstrap/1.4.0/bootstrap.min.css') 
    body 
    section.container!= body 

任务/ index.jade是:

h1 Your tasks 
p 
    a(href='/tasks/new', class='btn primary') Add a Task 

- if(docs.length) 
    table 
    tr 
     th Task 
     each task in docs 
      tr 
      td #{task.task} 
- else 
    p You don't have any tasks! 
+0

请注意所有最新浏览器上的行为:Firefox,Chrome和IE。 'layout.jade'中'标题'赋值的变化不起作用。 – MikeB

回答

2

布局已经快3(你很可能使用)被弃用。

相反,你需要使用template inheritance

// layout.jade 
... 
section.container 
    block body 
// tasks/index.jade 
extends ../layout 

block body 
    h1 Your tasks 
    ... 

或者,你可以安装快车2,而不是快递3,因为你可能,如果你的书假设版本2碰到其他问题:

npm install [email protected] 
4

取出=

应该

title #{title}