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.