其實仍是得按自個兒的需求來。javascript
koa-static
是一個很是輕量的koa
中間件,可以迅速的搭建起一個靜態文件服務器,一般咱們把靜態文件都放進public
,而且經過相似koa-static
這樣的東西來將咱們的public
做爲靜態目錄,這樣的話,咱們就能直接經過根路由進行訪問了。html
emmmm,扯多了。回到正軌java
首先koa-static
不能映射到其餘的路由上,通常是跟路由,好比訪問 public/main.html
(假設 public 爲靜態目錄),那麼就能夠經過 host:port/main.html
進行訪問獲得 main.html
,可是有時候我不想映射到根路由,這時候,koa-static
就顯得力不從心了。git
第二個問題是koa-static
只支持GET
和HEAD
兩個 HTTP 方法來進行訪問,這在大多數場景下是有用的,可是不免會遇到一些特別的場景,好比你想用POST
方法來拿到服務器上的靜態文件(若是你想)。github
吼,因此我作了awesome-static
,awesome-static
和koa-static
同樣,都是對 koa-send
的一層封裝,只不過awesome-static
用 Typescript
編寫,對 VSCode 支持良好。docker
awesome-static
擴充了koa-static
的 options
,添加了兩個字段shell
route
爲要映射到的路由,allowMethods
是要容許的 HTTP 方法bash
這兩個字段都是可選的,route
的默認值就是根路由,allowMethods
的默認值爲 HEAD
和 GET
,因此你能像使用 koa-static
同樣的使用 awesome-static
。服務器
看一下使用方法app
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);
複製代碼
配置了 route
爲 static
那麼如今訪問 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>
複製代碼
https://github.com/HaoDaWang/awesome-static
複製代碼