Koa介绍
koa是node.js的web框架,koa的前辈是express。koa也是由express的原班人马打造
为什么选择koa2?
- Express主要采用ES5的语法,异步操作通过回调函数处理,因此会出现‘回调地狱’。
- koa采用ES6的Generator函数+yield语句+Promise语句来处理异步操作。
- koa2采用ES7中的async/await+Promise来处理异步操作。async/await是专门为异步操作设计的基于Generator函数的语法糖,内置了执行器,不仅代码可读性强,而且ES支持原生的async/await。
Koa项目初始化
- npm init
- console.log(‘hello world’)
- node app.js 若运行没问题,则代表环境正常
- npm install koa -S 安装koa
代码示例:
const koa = require('koa');
const app = new koa();
app.listen(3000, () => {
console.log('server is listening at http://localhost:3000');
})
浏览器输入:http://localhost:3000
Context对象常用的属性和方法
ctx.request
- ctx.request.url
- ctx.request.query
- ctx.request.querystring
- ctx.request.method
- ctx.request.path
- ctx.request.on(‘data’, func)
- ctx.request.accepts()
代码示例:
const koa = require('koa');
const app = new koa();
app.use(async ctx => {
ctx.response.body = {
url: ctx.request.url,
query: ctx.request.query,
querystring: ctx.request.querystring
}
})
app.listen(3000, () => {
console.log('server is listening at http://localhost:3000');
})
浏览器输入:http://localhost:3000/?search=koa&keywords=context
ctx.response
- ctx.response.body
- ctx.response.status
- ctx.response.type
- ctx.response.redirect(url, [alt])
ctx.state
ctx.state是推荐的命名空间,通过中间件传递信息和前端视图
例:ctx.state.user = yield User.find(id) 把user属性存放到ctx.state对象里,以便能被另外一个中间件读取。
ctx.cookies
例:
ctx.cookies.set(name, value, [options]);
ctx.cookies.get(name, [options]);
ctx.throw
ctx.throw(500) 用于抛出错误,把错误信息返回给用户。