2013-06-19 54 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}