Koa是由express团队打造的新一代node框架,在express的基础上对一些用法做了一定的封装,两者在用法上比较类似,在koa中将req,res对象抽离融合成为了ctx上下文对象,有过express开发经验的同学上手应该很容易。
一、基础配置,挂载服务器实例
const koa = require('koa') //引入koa
const Router = require('koa-router') //引入koa的router模块
const app = new koa() //创建服务器实例
const router = new Router() //创建路由实例
const path = require('path')
router.get('/', async (ctx) => {
ctx.body = { msg: 2333 }
})
app.use(router.routes()) // 挂载路由
app.listen(2333, () => { // 挂载应用
console.log('success 2333')
})
如上即可实现一个基础的Koa node服务.
二、参数传递与处理
// get方法
router.get('/get/:name', async (ctx) => {
console.log(ctx.params) // 接收params传参
console.log(ctx.request.query) // 接收query形式传参
ctx.body = { query:ctx.request.query, params:ctx.params } //将参数处理后返回
})
// post方法 post方法接收参数需要使用一个插件 koa-bodyparser
const bodyParser = require('koa-bodyparser') // 引入插件
app.use(bodyParser()) // 挂载插件
router.post('/post', async (ctx) => {
console.log(ctx.request.body) //ctx.request.body 即可获取body传参
ctx.body = ctx.request.body //将参数处理后返回
})
三、子路由挂载
在开发的时候一个router模块往往是不满足开发需求的,这个时候则需要挂载多个路由模块
- 新建一个子路由 router.js文件
const Router = require("koa-router");
const crouter = new Router();
// get方法
router.get('/get', async (ctx) => {
ctx.status = 200
ctx.body = '这是一个get方法'
})
// post方法
router.post('/post', async (ctx) => {
ctx.status = 200
ctx.body = '这是一个post方法'
})
// 抛出crouter模块的
module.exports = crouter;
- 在index.js中引入并挂载子路由
const crouter = require('./router/router.js') // 引入子路由
// 挂载子路由
router.use(crouter.routes())
// 挂载子路由,并指定路由入口
router.use('/api',crouter.routes()) // 在访问/api/xxx时才进入子路由
四、静态资源库配置
// 1. 按照依赖 npm install koa-static
// 2. 引入依赖
const KoaStatic = require('koa-static');
// 3. 配置静态资源文件夹
app.use(koaStatic(path.join(__dirname, 'static')))