2012-04-08 72 views
1

我目前正在使用Node.js的Express框架,並且在每個頁面(路線)的基礎上包含樣式表和JavaScript文件時遇到問題。我使用的是默認的快速安裝與路線/ index.js文件,內容如下:Express(Node.js) - 有條件地包含CSS和JS文件

exports.index = function(req, res){ 
    res.render('index', { title: 'Index Page Test' }) 
}; 
exports.browse = function(req, res){ 
    res.render('browse', { title: 'Browse Page Test' }) 
}; 

的路由上述工作正常,它加載index.jade和browse.jade到的「身體」按預期佈局.jade。但是,索引路由所需的資產(CSS和JS文件)與瀏覽路徑所需的資源並不相同。我有可能將一個數組傳遞給包含所需資源的layout.jade模板並簡單地將其循環?

我試圖通過上面做:

Index.js(路線)

​​

通過遵循:

Layout.jade

each js in scripts 
     script(src= js) 

然而,它只是拋出一個錯誤說「scr ipts沒有定義。「 我很確定我沒有這樣做。此外,我只是想補充一點,我偶然發現了另一個類似的StackOverflow問題:Node.js with Express: Importing client-side javascript using script tags in Jade views? 但我不太喜歡那裏顯示的方法(它需要一個額外的幫手)。如果可能的話,我想堅持模板引擎本身提供的功能。

謝謝。

編輯:如果有幫助,我想實現類似於此:http://kerkness.ca/kowiki/doku.php?id=template-site:create_the_template

回答

2

嘗試將腳本數組傳遞給這樣的觀點:

res.render('index', { title: 'Index Page Test', scripts: scripts}) 
+0

對不起,如果我沒有讓自己清楚,但我已經試過這種方法,它只是拋出一個「腳本沒有定義」的錯誤。 – MrSaints 2012-04-08 19:54:33

+1

那麼你顯然一定是做錯了什麼:)我試過這個,它爲我工作 – mihai 2012-04-08 21:39:39

+0

你使用什麼版本的快遞?另外,在你的例子中,腳本似乎是某個對象的成員。你能發佈完整的代碼嗎? – mihai 2012-04-08 21:42:12

2

嘗試使用dynamicHelpers。

它將作爲腳本在您的玉石模板中作爲局部變量使用。

app.dynamicHelpers({ 
    scripts: function(req, res){ 
    return ['javascripts/jquery.js', 'javascripts/easel.js','javascripts/script.js']; 
    } 
}); 
+0

太棒了!它現在有效。有沒有辦法改變不同路線中的「腳本」數組? – MrSaints 2012-04-09 08:47:24

+1

使用像supervisor這樣的東西來自動重啓節點應用程序。 – Exploit 2012-04-09 10:12:58

+0

動態助手不在快遞3中:https://github.com/visionmedia/express/wiki/Migrating-from-2.x-to-3.x – Petrogad 2013-11-24 13:46:06