要提供靜態文件(如images、CSS文件和JavaScript文件),請使用Express中的express.static
內置中間件功能,函數簽名是:css
express.static(root, [options])
root
參數指定從中提供靜態資源的根目錄,有關options
參數的更多信息,請參閱express.static
。html
例如,使用如下代碼在名爲public
的目錄中提供images、CSS文件和JavaScript文件:node
app.use(express.static('public'))
如今,你能夠加載public
目錄中的文件:express
http://localhost:3000/images/kitten.jpg http://localhost:3000/css/style.css http://localhost:3000/js/app.js http://localhost:3000/images/bg.png http://localhost:3000/hello.html
Express會查找相對於靜態目錄的文件,所以靜態目錄的名稱不是URL的一部分。
要使用多個靜態資源目錄,請屢次調用express.static
中間件函數:segmentfault
app.use(express.static('public')) app.use(express.static('files'))
Express按照使用express.static
中間件函數設置靜態目錄的順序查找文件。緩存
注意:爲得到最佳結果,請使用反向代理緩存來提升服務靜態資源的性能。
要爲express.static
函數提供的文件建立虛擬路徑前綴(文件系統中實際不存在路徑),請爲靜態目錄指定掛載路徑,以下所示:安全
app.use('/static', express.static('public'))
如今,你能夠從/static
路徑前綴加載public
目錄中的文件。app
http://localhost:3000/static/images/kitten.jpg http://localhost:3000/static/css/style.css http://localhost:3000/static/js/app.js http://localhost:3000/static/images/bg.png http://localhost:3000/static/hello.html
可是,你提供給express.static
函數的路徑是相對於啓動node進程的目錄,若是從另外一個目錄運行express應用程序,則使用要提供的目錄的絕對路徑更安全:函數
app.use('/static', express.static(path.join(__dirname, 'public')))
有關serve-static
函數及其選項的更多詳細信息,請參閱serve-static
。性能