2012-06-27 42 views
1

找到視圖我有這樣玉沒有不同的文件夾

/Workspace 
    /app 
    app.js 
    /lib 
    /public 
     /styles 
     *.css 
     /scripts 
     *.js 
    /views 
     *.jade 
app

app.js一個目錄,我有以下代碼:

libPath = __dirname + '/../lib' 

... express stuff ... 

app.configure(function() { 
    app.set('view', libPath + '/views') 
    ... express stuff ... 
    app.use(express.static(libPath + '/public')) 

... rest of the app ... 

現在的問題是,玉能」找到任何視圖,但找到所有靜態資產。因此,app.set('view')不起作用,但express.static是。如果我將views目錄複製到app,則使用__dirname + '/views'可以正常工作。任何人都知道這是爲什麼發生?

在做app.get('view'),我得到這樣一個目錄:/Users/jong/Workspace/app/../lib/views。我試圖做絕對路線/Users/jong/Workspace/lib/views以及無濟於事。這個目錄適用於靜態資產,但不適用於模板,這很奇怪。

回答

5

你有一個錯誤,正確的選項名稱是views,而不是view

配置您的應用程序一樣

app.set('views', __dirname + '/views'); 
    app.set('view engine', 'jade'); 
    app.set('view options', { layout: true }); 

但問題的主要根源在於你似乎誤會如何express(和MVC的話)的作品。

express一旦請求url匹配現有的靜態文件路徑,就會使用您的express.static configure指令向瀏覽器發送靜態數據。

否則,它會嘗試爲請求的路徑找到任何已定義的路由並執行相關的控制器(可能會或可能不會使用模板引擎)。

因此,爲了顯示例如,索引頁(即使它沒有參數),因爲你在你的文件夾viewsindex.js,你必須做一些像

app.get('/', function (req, res, next) { 
    res.render('index', {}); 
}); 
+0

我的上帝......它不會幫助它工作一半時間只有'view'。啊。謝謝! –

相關問題