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.userInfoconsole.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.userInfoconst 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()
}
是不是很简单。
KOA2路由koa-router实现类似express router的文件结构设计---KOA入门学习相关推荐
- Nodejs 路由封装 封装一个类似 express 的路由
1.模块化的方式封装 routes.js: const http = require('http'); const fs = require('fs'); const path = require(' ...
- 探讨Express Router Route
Express 基于 Node.js 平台,快速.开放.极简的 web 开发框架 安装 //应用生成器工具 npm install express-generator -g//创建express应用包 ...
- node --- 使用express.Router与body-parser
express框架提供了一个Router方法,用于监听路由 // 命令行(windows*64) npm install express --save // router.js const expre ...
- 当使用this.$router.back()或者this.$router.go(-1)返回上一页时,搭配组件内路由守卫,屏幕闪烁和跳转页面错误问题
当使用this.$router.back()或者this.$router.go(-1)返回上一页时,搭配组件内路由守卫,屏幕闪烁和跳转页面错误问题 问题描述:项目有这个需求,当页面的输入框内容填完之后 ...
- vue router name命名规范_超完整的Vue入门指导
脚本之家 你与百万开发者在一起 作者 | kiba518出品 | 脚本之家(ID:jb51net)前言 新建项目近些年前端开发快速发展,现在学习前端已经不像以前那样仅仅学习一个语法就可以了,它已经是一 ...
- express路由子路由器_使用Express在Node中构建您的第一个路由器
express路由子路由器 本文最初发布在Okta开发人员博客上 . 感谢您支持使SitePoint成为可能的合作伙伴. 如果最近几年您使用Node进行过任何Web开发,那么您可能已经使用过Expre ...
- this.$router.go()和this.$router.push()的区别
this.router.go()和this.router.go()和this.$router.replace的差别 this.$router.go(val) 介绍: 在history记录中前进或者后退 ...
- 前端笔记(11) Vue3 Router 编程式导航 router.push router.replace
什么是编程式导航? 在上篇博客Vue3 Router 监听路由参数变化中,我们使用 <router-link> 创建 a 标签来定义导航链接: <router-link to=&qu ...
- vue router html模板,vue.router
一.安装vue-router vue-router是一个插件包,所以我们还是需要用npm来进行安装的.打开命令行工具,进入你的项目目录,输入下面命令.npm install vue-router -- ...
最新文章
- Android中的eventBus传值
- SCAU 1078 破密
- ios开发ocr识别_车牌识别技术
- 中国工程师最喜欢的10大WiFi物联网芯片
- 【计算机网络复习 数据链路层】3.6.2 以太网
- android 判断当前窗口,Android判断当前界面是否是home界面
- 服务器排序规修改办法,WordPress手动修改文章排列顺序摆脱按发布时间升降序排列...
- 索引 | ggplot2基础语法系列推文汇总
- 一些and知识 和ui
- Activiti6详细教程
- Android系统模块编译Makefile编写规则
- https://github.com/qiangqiang666/demo
- 关于论文写作中的人名缩写问题
- 链游Farmers World【农民世界】爆火,发布一个免费开源的辅助挂机脚本
- uip-udp-demo分析---基于contiki
- Centos7.3-Oracle11g数据库静默部署
- 7zip自带hash校验功能
- pta 藏头诗(C语言实现)
- 数字孪生技术(数字化双胞胎)
- 4星|《职场老手的情绪管理法》:生活中的10%是由发生在你身上的事情组成,而另外的90%则是由你对所发生的事情如何反应所决定...
热门文章
- php获取文件名称和扩展名
- 管理表空间和数据文件——维护表空间——改变表空间的读写状态和改变表空间名称...
- JavaScript 方法传参
- 女儿社交媒体求生日卡 美96岁失明二战老兵收海量祝福
- 溃不成军:科通芯城一度再跌近30% 股价三天腰斩
- OpenStack社区正式接受UnitedStack有云Steth项目
- install tabix/bgzip
- 认识登录控件(Login、CreateUserWizard、LoginStatus和LoginName)
- XCode 学习技巧之 User Scripts
- Apache Web服务器资源使用限制配置