koa框架学习记录(5)

Koa2原生路由实现
实现原生路由,需要得到地址栏输入的路径,然后根据路径的不同进行跳转。用ctx.request.url就可以实现

const Koa = require('koa')
const app = new Koa()

app.use( async ( ctx ) => {
let url = ctx.request.url
ctx.body = url
})
app.listen(3000)

原生路由的实现需要引入fs模块来读取文件。然后再根据路由的路径去读取,最后返回给页面,进行渲染

const Koa = require('koa');
const fs = require('fs');
const app = new Koa();

function render(page){


returnnew Promise((resolve,reject)=>{
let pageUrl = `./page/${page}`;
fs.readFile(pageUrl,"binary",(err,data)=>{
console.log(444);
if(err){
reject(err)
}else{

resolve(data);
}
})
})

}

async function route(url){

let page = '404.html';
switch(url){
case '/':

page ='index.html';
break;
case '/index':
page ='index.html';
break;
case '/todo':
page = 'todo.html';
break;
case '/404':
page = '404.html';
break;
default:
break;
}
let html = await render(page);

return html;
}

app.use(async(ctx)=>{
let url = ctx.request.url;
let html = await route(url);

ctx.body=html;
})
app.listen(3000);
console.log('starting at 3000');