koa2-7
Posted 小凡的耿
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了koa2-7相关的知识,希望对你有一定的参考价值。
Koa2原生路由实现
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)
这时候访问http://127.0.0.1:3000/jspang/18 页面会输出/jspang/18。会了这个,我们就可以根据输出的不同,实现的页面结果。
原生路由实现
原生路由的实现需要引入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‘);
以上是关于koa2-7的主要内容,如果未能解决你的问题,请参考以下文章