Koa-Static 該換換了吧 試試 Awesome-Static

其實還是得按自個兒的需求來。

koa-static 有啥問題麼

koa-static是一個非常輕量的koa中間件,能夠迅速的搭建起一個靜態文件服務器,通常我們把靜態文件都放進public,並且通過類似koa-static這樣的東西來將我們的public作爲靜態目錄,這樣的話,我們就能直接通過根路由進行訪問了。

emmmm,扯多了。回到正軌

首先koa-static不能映射到其他的路由上,一般是跟路由,比如訪問 public/main.html(假設 public 爲靜態目錄),那麼就可以通過 host:port/main.html 進行訪問得到 main.html,但是有時候我不想映射到根路由,這時候,koa-static就顯得力不從心了。

第二個問題是koa-static只支持GETHEAD兩個 HTTP 方法來進行訪問,這在大多數場景下是有用的,但是難免會遇到一些特別的場景,比如你想用POST方法來拿到服務器上的靜態文件(如果你想)。

awesome-static

吼,所以我做了awesome-staticawesome-statickoa-static一樣,都是對 koa-send的一層封裝,只不過awesome-staticTypescript編寫,對 VSCode 支持良好。

awesome-static擴充了koa-staticoptions,添加了兩個字段

  • route
  • allowMethods

route爲要映射到的路由,allowMethods是要允許的 HTTP 方法

這兩個字段都是可選的,route 的默認值就是根路由,allowMethods 的默認值爲 HEADGET ,所以你能像使用 koa-static 一樣的使用 awesome-static

看一下使用方法

const Koa = require('koa');
const app = new Koa();
const { AwesomeStatic } = require('awesome-static');

app.use(AwesomeStatic('public'));

app.listen(8888);

public 下有一個 html 文件,下面是 public 的目錄結構

public
└── main.html

在啓動服務器後就能通過http://localhost:8888/main.html進行訪問了

現在來配置一下 route

const Koa = require('koa');
const app = new Koa();
const { AwesomeStatic } = require('awesome-static');

app.use(AwesomeStatic('public', {
    route:"static"
}));

app.listen(8888);

配置了 routestatic 那麼現在訪問 main.html 就需要訪問http://localhost:8888/static/main.html

如果再配置一下 allowMethods ,來設置一下允許的 HTTP 方法,讓它只能通過POST 來訪問

const Koa = require('koa');
const app = new Koa();
const { AwesomeStatic } = require('awesome-static');

app.use(AwesomeStatic('public', {
    route:"static",
    allowMethods:["POST"]
}));

app.listen(8888);

現在再通過 http://localhost:8888/static/main.html 就會去 404 了~

來模擬一個 POST 請求

curl http://localhost:8888/static/main.html -X POST

Output:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Document</title>
  </head>
  <body>
    <h1>Main</h1>
  </body>
</html>

Github

https://github.com/HaoDaWang/awesome-static
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章