Koa2使用简介
Koa2使用简介
1.安装
npm install koa
2.简单使用
const Koa = require('koa')
const app = new Koa()
app.use(ctx => {
ctx.body = 'ttx'
})
app.listen(3000)
网络请求访问时,就会响应”ttx”。当然koa2也支持异步函数输入:
app.use(async ctx => {
await delay(3000)
ctx.body = 'ttx'
}))
3.中间件使用链
app.use(async (ctx, next) => {
await next()
console.log('ttx')
})
app.use(async (ctx, next) => {
console.log('jss')
})
app.use(async (ctx, next) => {
console.log('nali')
})
请求触发时依次输出jss
、ttx
,形成中间件处理链,截止在没有使用next
将中间件调用权转出的中间件。
4.路由模块
express
内置了router
路由模块,但koa
需要自行添加;koa
的app.use()
不能直接像express
一样进行路由区分。
// app.js
const Koa = require('koa')
const bodyParser = require('koa-bodyparser') // 处理post请求,上下文的表单数据解析到ctx.request.body中
const router = require('koa-router')()
const page1Router = require('./routes/page1.js)
const app = new Koa()
app.use(bodyParser())
router.use('/page1', page1Router) // 注意起始的/是必须的
app.use(router.routes()) // 路由挂载
app.listen(3000)
// page1.js
const router = require('koa-router')()
const page2Router = require('./page2.js')
router.get('/', async (ctx, next) => {
ctx.body = 'page1'
})
router.use('/page2', page2Router)
module.exports = router.routes()
// page2.js
const router = require('koa-router')()
router.get('/', async (ctx, next) => {
ctx.body = 'page2'
})
module.exports = router.routes()
上述是模块化的样式及路由嵌套的使用。
5.模板引擎模块
// app.js
// ...
const views = require('koa-views') // view中间件
const path = require('path') // 路径处理中间件
const router = require('koa-router')()
const app = new Koa()
app.use(views(path.join(__dirname, './views'), {
extension: 'ejs'
}))
router.get('/page1', async (ctx, next) => {
await ctx.render('page1', {name: 'ttx'}) // 注意await是需要的
})
// ...
6.快速构建项目
npm install koa-generator -g
koa2 myProject
7.小计
总的来说,koa
和express
大同小异,koa
精简了许多内置中间件,可以使用async/await
进行异步书写,更方便;但koa
中间件少,很多需要的配置都要自己去写一遍,项目构建时相对麻烦。
THE END!