this example is used for ts, if you are js user, if can use as almost the same, just delete the type define.
//app.tsimportRouter,{koaRouter}from'maranda-koa2-router';importKoafrom'koa';import{joinaspathJoin}from'path'interfaceCtx{// your custom context}exporttypeRoute=Router.Route<any,Ctx>;exporttypeMiddleware=Router.Middleware<any,Ctx>;constapp=newKoa<any,Ctx>();constrouter=newRouter<any,Ctx>(pathJoin(__dirname,'Routers'),{..});router.get('/',async(ctx,next)=>{
...
awaitnext();
...
});app.use(router.routes())app.listen(8080)console.log('app started at port 8080...');//Routers/ajax/text.tsimport{Route}from'../../app';import{middleware1}from'../Middlewares/a'import{middleware2}from'../Middlewares/b'import{middleware3}from'../Middlewares/c'consta0:Route={path: '/a0',methods: ['get'],middleware: middleware1}constb1:Route={path: ['/b1','/b1/x'],methods: ['get'],middleware: [middleware2,middleware3]}export{a0,b1}//Middlewares/a.tsimport{Middleware}from'../../app'export middleware1:Middleware=aysnc(ctx,next)=>{
...
awaitnext();
...
}
// type2//app.tsconstrouter=Router.LoadRoutes<any,Ctx>(pathJoin(__dirname,'Routers'),{..});
....router.then((rt)=>{rt.get('/',async(ctx,next)=>{
...
awaitnext();
...
});app.use(rt.routes())app.listen(8080)console.log('app started at port 8080...');})