2016-03-28 42 views
0

我有下面的代碼,例如,在我的模板文件:服務在快速靜態文件,而無需一個IP地址

<link href="http://localhost:3000/css/bootstrap.min.css" rel="stylesheet">

這迫使我從http://localhost:3000更改IP地址到Web服務器IP每當我啓動網站時都會提供地址正如你可以想象的,整個網站有很多模板文件。我已經編寫了可以在項目的模板文件中搜索和替換IP實例的腳本,如果可以的話,我想避免這種情況。

我想保持以下格式:

<link href="css/bootstrap.min.css" rel="stylesheet">

注意它是獨立起源的。我希望Express可以使用服務器的當前位置來提供文件。

我目前使用此代碼在我server.js文件:

app.use(express.static(path.join(__dirname ,'/v1/public/')));

如果我指定的模板文件主機的偉大工程。我還沒有發現任何網上資源,可以輕鬆完成我想做的事情。

+0

爲什麼不使用絕對路徑? – SLaks

+0

我想你想設置不同的端口? http://stackoverflow.com/a/17004592/3662110 – jmargolisvt

+0

@SLaks正如在這篇文章中所述,我必須手動或編寫腳本來在啓動服務器時自主替換絕對路徑。 – Maverick

回答

1

如果標題是模板文件,爲什麼不將完整的url作爲變量傳遞給模板?您可以通過構建的東西在應用級的網址是這樣的:

var baseUrl = req.protocol + '://' + req.get('host'); 

,並通過baseUrl到你的頭模板和前綴在運行時的路徑。

+0

我會試試這個 – Maverick

+0

這個解決方案是實用的和特別有效的。 **編輯:**對於未來的開發者:'req.get('host')'還包含url返回的字符串中的端口和冒號。不需要追加它。嚴格按照阿貝爾規定使用。 – Maverick

0

嘗試:

href="http://localhost:3000/v1/public/css/bootstrap.min.css" rel="stylesheet" 

或相對:

href="./v1/public/css/bootstrap.min.css" rel="stylesheet" 

你的靜態文件夾是靜態的資源將被送達的文件夾路徑。