Koa2原生路由实现
简单例子
1 2 3 4 5 6 7 8 9
| const Koa = require('koa2') const app = new Koa()
app.use(async ctx =>{ ctx.body = ctx.request.url console.log(ctx.request.url) })
app.listen(3000)
|
通过ctx.request封装好的对象获取请求的url,所以可以通过ctx.request.url进行一定的判断或者正则匹配就可以定制出所需要的路由
定制路由
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| (async ()=>{
const Koa = require('koa2') const fs = require('fs') const app = new Koa() function render(page) { return new Promise((relove, reject) => { let view = `./public/${page}` fs.readFile(view, "binary", (err, data) => { if (err) { reject(err) } else { resolve(data) } }) }) } async function route(url) { let view = '404.html' switch (url) { case '/': view = 'index.html' break case '/index': view = 'index.html' break case '/todo': view = 'todo.html' break case '/404': view = '404.html' break } let html = await render(view) return html } app.use(ctx=>{ let url = ctx.request.url let html = await route(url) ctx.body = html }) app.listen(3000) console.log("a simple router is runing ")
})()
|
Koa-router中间件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| const koa = require('koa2') const fs = require('fs') const app = new koa()
const Router = require('koa-router')
let home = new Router()
home.get('/',async ctx=>{ let html = ` <button>test</button> ` ctx.body = html })
let page = new Router() page.get('/404',async ctx =>{ ctx.body = '404 page'
}).get('/helloworld',async ctx=>{ ctx.body = 'helloworld page!' })
let router = new Router() router.use('/',home.routes(),home.allowedMethods) router.use('/page',page.routes(),page.allowedMethods)
app.use(router.routes()).use(router.allowedMethods)
app.listen(3000,()=>{ console.log('a koa-router-use-middleware is running') })
|
评论加载中