2016-11-02 93 views
0

當我設置了一些路由我normaly做這樣的:Express.js路線orgainisation

app.get('/x', function(req, res) { 
res.sendFile(path.join(__dirname + '/public/.../index.html'));}); 

這裏的問題是,如果你有JS或CSS在路徑文件夾你不能收留他們。

所以很多時候我纔剛剛路由添加下面

app.get('/public/.../js/index.js', function(req, res) {res.sendFile (__dirname + '/public/.../js/index.js');}); 
app.get('/public/.../css/style.css', function(req, res) {res.sendFile (__dirname + '/public/.../css/style.css');}); 

讓JS和CSS訪問。

我已經主機庫與快速靜態

app.use('/lib', express.static('lib')); 

但是,這是不可能的JS和CSS在路徑文件夾(/public/.../js)

  • 是有更好的方法來組織我的路徑文件夾中的文件?
+0

您應該能夠訪問UR這個/ lib文件夾中的JS文件夾..i通常會將所有客戶端(腳本,樣式,圖像)放入您的案例庫lib中的一個文件夾中,並且您可以使用express.static來承載它。 –

+0

如果將所有靜態文件放入一個或多個目錄,那麼你可以用'express.static()'語句輕鬆地創建路徑。然後,調整HTML文件中指向這些靜態資源的路徑,以便與您創建的路線對齊。 – jfriend00

+0

我想到了這個問題,但決定不這樣做,因爲那樣你就會擁有10個文件夾中的所有東西,然後我會有同樣的問題,它不會是有組織的,但這次不是在代碼中,而是在文件系統中。但我找不到另一種解決方案,所以這是我唯一的選擇。讓我們看看有人提出了一個解決方案。 –

回答

1

您可以使用虛擬路徑,維持目前的目錄結構,添加下列路線,你可以參考你的所有靜態文件與/靜態前綴從下./public子目錄:

app.use('/static', express.static('public')) 

例如你可以參考http://your_server/static/public/.../js/index.js請注意,在這種情況下,/ public下的所有文件都可以通過/ static前綴訪問,所以您不應該在那裏有服務器代碼或服務器配置。

理想的情況下,爲了清楚起見,你應該主機,並且從一個根文件夾是指與類型的子文件夾(如/靜態/ JS,/靜態/ CSS)所有的靜態文件:

app.use('/static', express.static('static'))