lang
En | 中文
@wxiaochuan/koa-history
is a koa middleware that implements html5 history routes. It can flexibly configure routing on koa, and can be used in SPA projects written in vue, react and angular frameworks.
// npm
npm i @wxiaochuan/koa-history
//yarn
yarn add @wxiaochuan/koa-history
const history = require('@wxiaochuan/koa-history');
const Koa = require('Koa');
const app = new Koa();
app.use(history({
routes: ['/user', '/post'],
root: '/dist'
}));
export interface Router {
path: string;
children?: Array<Router>;
}
export interface Option {
routes?: Router | Router[] | string[];
shield?: boolean;
root: string;
opts?: any;
}
This setting is also known as match-all mode. When routes option is null, all request paths will return.
app.use(history({
root: '/dist'
}));
This setting will return when request path match routes options.
app.use(history({
routes: ['/user', '/post'],
root: '/dist'
}));
Options also support nested routes.
app.use(history({
routes: [
{
path: '/user',
children: [
{
path: 'foo'
}
]
}
],
root: '/dist'
}));
In the example above, request path /user
and /user/foo
will return html file.
Dynamic route is supportted
app.use(history({
routes: [
{
path: '/user/:id'
}
],
root: '/dist'
}));
It is recommended to use this method to return static files.
const history = require('@wxiaochuan/koa-history');
const Koa = require('Koa');
const koaStatic = require('koa-static');
const app = new Koa();
app.use(history({
routes: ['/user', '/post'],
root: '/dist'
}));
app.use(koaStatic('/dist'));
app.listen(9000);
The default is to return the index.html file
app.use(history({
routes: ['/user', '/post'],
root: '/dist',
opts: {
index: 'myfile.html'
}
}));
By default, a path that is not defined in the routes option will return 404, regardless of whether the file exists or not, it will be blocked by default. In the above example, a 404 is returned when path=/ is requested despite the dist/index.html
file existed. To turn off this behavior, set shield
to false
.