如果你已经在前端 工作岗位奋战了几个月,你会清楚的知道路由对于编程的重要性,它就是前端的业务逻辑和思想。我们通过判断进行各种页面的展示效果。这节课在不借助中间件的情况下,我们用原生方法简单实现以下路由
** ctx.request.url **
要想实现原生路由,需要得到地址栏输入的路径,然后根据路径的不同进行跳转。用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){
return new 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’);