koa-static + koa-mount 實現多個靜態資源服務
阿新 • • 發佈:2020-12-22
在express服務中,靜態服務有
app.use('/static',express.static('./static'))
類似這種寫法,然後可以支援特定路由下的靜態服務,且可以支援多個不同路由。
然而在koa中,static靜態服務被抽離到了koa-static下,並且是直接對外支援靜態服務。
因此即使設定了多個檔案目錄,最終的對外訪問路由依然是同一個。
而npm文件中則明確沒有引數用來控制路由。但是最後還是給了方案:
可以使用koa-mount來給koa-static新增特定路由:
首先引入包
const Static = require('koa-static'); const Mount = require('koa-mount');
然後設定通用預設的靜態路由服務:
app.use(Static('./web'),{defer:true})
defer引數用於控制此路由解析最後執行,因為這裡的根目錄是 / ,用這種方式可以先解析其他特定路由,防止衝突,這裡可以把index.html之類的檔案放在這裡,用於預設展示
最後可以新增自己想要靜態服務並掛載到特定路由上:
app.use(Mount('/static',Static('./static')))
此時訪問路由就是 '/static/**'