在这java横行时代,其他的一些后台的框架就显得有些弱小无助,但是也都不会影响一个好用优秀的框架的存在
这篇文章主要是给小伙伴们介绍一下koa的使用和个人的见解,欢迎各路大神指点指点。
进入主题:首先koa是一个基于NodeJS的一款框架,相信一些前端的小伙伴对NodeJS都不陌生了,我在这里也就不过多介绍了。koa框架有一个很大的特点,就是洋葱模型。大家可以先了大概的了解一下下面的洋葱模型图,初次接触的小伙伴可能有点不理解,但是没关系,在使用的过程中就会慢慢的体会到这洋葱模型的巧妙之处。
----开始搭建koa服务器----
1、//在node环境加载koa框架以及一些中间件
//(npm可以一次性下载多个包的:npm i <name> <name> <name>)
npm i koa //koa框架
npm i koa-router //koa路由模块
npm i koa-mount //koa挂载页面模块
npm i koa-static //koa挂载页面模块
npm i koa-body //koa解析请求体的模块
2、//创建一个入口文件app.js
const Koa = require('koa')
const Router = require('koa-router') // 路由模块
const koaBody = require('koa-body') //请求体模块
const mount = require('koa-mount') // 挂载页面等
const Static = require('koa-static') // 挂载页面等
const app = new Koa() //初始化koa
// 挂载解析body请求体的中间件
app.use(koaBody({
multipart: true, // 支持文件上传
strict:false,//设为false
encoding:'utf-8',
formidable:{
// uploadDir:path.join(__dirname,'public/upload/'), // 设置文件上传目录
keepExtensions: true, // 保持文件的后缀
maxFieldsSize:2 * 1024 * 1024, // 文件上传大小
}
}))
// 初始化koa路由模块
const admin = new Router()
// 以 登录 为例子,接收到得参数是username,password
admin.post('/login',async (ctx)=>{
// 这里假设数据库中的数据
let sqlData = {username:'admin', password:'123456'}
// 接收post请求中的参数,这里的请求中参数会经过koa-body模块的处理,ctx.request.body是一个对象
let {username, password}= ctx.request.body;
// 业务逻辑判断
if( username === sqlData.username && password === sqlData.password ){
ctx.body = '登录成功!'
}else{
ctx.body = '用户名或密码错误!'
}
})
// 挂载 各类路由模块
app.use(admin.routes())
.use(admin.allwoedMethods())
// 监听4000端口,也可以监听ip地址,如果不设置地址,就是主机的ip地址
app.listen(4000,()=>{
console.log('listen 4000')
})
3、//创建完app.js入口文件之后,就可以运行这个简单的服务器了。
//可以用postman测试一下post方法 ip地址:4000/login
node app.js
上面是最简单的服务器,有很多可以优化的地方,可以更规范,更加容易管理。下面是我的个人一个规范,可以大家一起互相学习一下,欢迎各路大神指点。