KOA2路由koa-router实现类似express router的文件结构设计---KOA入门学习
说明
- 用过express的都知道express入口文件只有一个app.js,里面写好了很多路由配置,通常情况下,会有一个routes文件夹,用来对对应路由规则的数据进行处理,响应请求,而不是将所有的功能写在app.js文件中,类似下图结构:
问题
- 在学习koa2时,几乎没有人提到怎么将不同路由规则的处理逻辑分开,网上的教程只是(截至目前)讲怎么获取get,post等,这里给大家介绍如何实现koa的类似文件结构,便于项目的维护和更加直观的分辨项目结构关系。结果如下图:
入口文件:index.js可自行定义名字,不多说。
const Koa = require('koa'); const Router = require('koa-router'); const app = new Koa() const bodyParser = require('koa-bodyparser'); const router = new Router(); const session = require('koa-session'); const cors = require('koa2-cors'); const userlogin=require('./routes/userlogin') const registerNewUser=require('./routes/registerNewUser') app.use(session(app)) app.use(bodyParser({ enableTypes:['json','text','form'] })) app.use(cors({ origin: 'http://localhost:3000', exposeHeaders: ['WWW-Authenticate', 'Server-Authorization'], maxAge: 5, credentials: true, allowHeaders: ['Content-Type', 'Authorization', 'Accept'], })); router.post('/userlogin',userlogin) router.post('/registerNewUser',registerNewUser) // router.get('/post', ctx => { // ctx.body = ctx.request.body // }) app.use(async (ctx, next) => { console.log(ctx.request.path+':'+ctx.request.method); await next(); }); app .use(router.routes()) .use(router.allowedMethods()) server.listen(3007)
子路由文件registerNewUser.js export一个函数(在express中使用的是module.exports=router)
module.exports=(ctx,next)=>{ let registerUser=ctx.request.body.userInfo console.log(registerUser) if(registerUser.new_password==registerUser.new_password1){ ctx.body={registerState:'success',msg:'注册成功'}; }else{ ctx.body={registerState:'error',msg:'注册失败,两次密码不对应'} } next() }
同样的,子路由文件userlogin.js export一个函数
module.exports= async function userlogin(ctx,next) { let loginUser=ctx.request.body.userInfo const users=[ ] let userMatched={}; for(let index in users){ if(users[index].username==loginUser.username){ userMatched=users[index] } } if(userMatched.password==loginUser.password){ ctx.body={loginState:'success',msg:'登陆成功',user:userMatched}; }else{ ctx.body={loginState:'error',msg:'用户名或密码错误'} } next() }
是不是很简单。
相关推荐
LorenLiu 2020-06-07
wangxuekuan 2020-11-24
xuedabao 2020-11-19
hjr 2020-10-21
sjun0 2020-11-12
bestallen 2020-08-17
80143853 2020-08-17
Tplinkly 2020-08-15
dingyahui 2020-08-12
JiangMengYa 2020-07-30
BingGoGo技术 2020-07-25
前端小白 2020-07-19
JudeJoo 2020-07-14
bowean 2020-07-05
82344699 2020-07-05
85423468 2020-06-26
tuxlcsdn 2020-06-21