实在照样得按自各儿的需求来。
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
只支撑GET
和HEAD
两个 HTTP 要领来举行接见,这在大多数场景下是有效的,然则难免会碰到一些迥殊的场景,比方你想用POST
要领来拿到服务器上的静态文件(假如你想)。
awesome-static
吼,所以我做了awesome-static
,awesome-static
和koa-static
一样,都是对 koa-send
的一层封装,只不过awesome-static
用 Typescript
编写,对 VSCode 支撑优越。
awesome-static
扩大了koa-static
的 options
,添加了两个字段
- route
- allowMethods
route
为要映射到的路由,allowMethods
是要许可的 HTTP 要领
这两个字段都是可选的,route
的默认值就是根路由,allowMethods
的默认值为 HEAD
和 GET
,所以你能像运用 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);
设置了 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>
Github
https://github.com/HaoDaWang/awesome-static