- 🦄 Based on top of Trek Router which inspired by Echo's Router.
- 🚀 Faster than other Koa.js router solutions.
- 💅🏻 Express-style routing (
app.get
,app.post
,app.put
,app.delete
, etc.) - 🔥 Blaze and lightweight router.
- ⚖️ Tiny Bundle: less than 2.5kB (gzip)
- 🪁 Named URL parameters.
- 🎯 Route middleware.
- 🥞 Support router layer middlewares.
- 📋 Responds to
OPTIONS
requests with allowed methods. - ⛔️ Support for
405 Method Not Allowed
. - ❌ Support for
501 Path Not Implemented
. - 🧼 Support
trailing slash
andfixed path
by automatic redirection. - ✨ Asynchronous support (
async/await
). - 🎉 TypeScript support.
Currently, this modules support 405 Method Not Allowed
and 501 Path Not Implemented
for 'static' routes only
as you can see here.
As soon as possible when I get response here will support 'param' and 'match-any' routes.
For support RegExp
in route path also I waiting for
any response here.
All Koa router solutions depend on path-to-regexp when our solution relies on the trek-router which has the best performance and not over the path-to-regexp only also on others such as (route-recognizer, route-trie, routington ...etc).
- See trek-router benchmarks (
trek-router
better perf. thanpath-to-regexp
). - See fastify benchmarks (
koa-isomorphic-router
better perf. thankoa-router
).
# npm
$ npm install koa-isomorphic-router
# yarn
$ yarn add koa-isomorphic-router
This is a practical example of how to use.
const Koa = require('koa')
const Router = require('koa-isomorphic-router')
const app = new Koa()
const router = new Router()
router
.get('/product/:id', (ctx, next) => {
ctx.body = { productId: ctx.params.id }
})
app.use(router.routes())
app.listen(5050)
Create a new router.
Param | Type | Description |
---|---|---|
[options] | Object |
|
[options.prefix] | String |
prefix router paths |
[options.throw] | Boolean |
throw error instead of setting status and header |
[options.notImplemented] | function |
throw the returned value in place of the default NotImplemented error |
[options.methodNotAllowed] | function |
throw the returned value in place of the default MethodNotAllowed error |
The http methods provide the routing functionality in router
.
Method middleware and handlers follow usual Koa middleware behavior, except they will only be called when the method and path match the request.
// handle a GET / request.
router.get('/', (ctx) => { ctx.body = 'Hello World!' })
Route paths can be prefixed at the router level:
// handle a GET /prePath/users request.
router
.prefix('/prePath')
.get('/users', (ctx) => { ctx.body = 'Hello World!' })
Lookup route with given path.
// handle a GET /users request.
router
.route('/users')
.get((ctx) => { ctx.body = 'Hello World!' })
Use given middleware(s). Currently, use middleware(s) for all paths of router isntance.
Returns router middleware which handle a route matching the request.
If you have any problem or suggestion please open an issue here.
This module is a attempt to craft an isomorphic fast Router, from/to Koa.js community. So, don't hesitate to offer your help ❤️.
Name | Website |
---|---|
Imed Jaberi | https://www.3imed-jaberi.com/ |