Koa入门教程-开端
SegmentFault
共 3229字,需浏览 7分钟
·
2020-10-13 09:20
作者:sheldon
来源:SegmentFault 思否社区
前言
Koa 是一个精致小巧的基于 Node.js 的 Web 框架。目前有 1.x 和 2.x 2 个大的版本其中 2.x 版本使用了 Node.js v7.6.0 之后支持的 async await 语法糖,提供了更优雅的异步编程模式。
Koa 有如下特点:
内核精简,不内置中间件. 小巧但富有表现力。 类似栈的方式运行中间件,Koa 调用下游,然后堆栈展开再将控制再流回上游。简单实用 实用async await或generator避免了callback hell 优雅的异常捕获
开端。安装和启动 常用中间件 错误处理和最佳实践 开发并部署一个 todo-list 应用 升级为 Koa2 初探 Koa 源码
安装
进入我们的项目目录,安装 Koa
# 初始化 package.json
npm init
# 安装 Koa 1.x
npm i koa@1 -d
在我们的项目目录创建一个 index.js 文件,用于编写 Web 站点的主要逻辑
const Koa = require('koa')
const app = new Koa() // 实例化一个 Koa 应用
app.listen(3000) // 让 Koa 启动内置 server
const server = http.createServer(app.callback())
server.listen(3000)
中间件
const Koa = require('koa')
const app = new Koa() // 实例化一个 Koa 应用
// 日志中间件
const mylogger = function *(next) {
yield next
// 在 Koa1版本 的Generator中间件函数中,this表示context对象
const rt = this.response.get('X-Respnose-Time')
console.log(`${this.method} ${this.url} - ${rt}`)
}
// x-response-time 中间件
const mytime = function *(next) {
const start = Date.now()
yield next
const ms = Date.now() - start
this.set('X-Response-Time', `${ms}ms`)
}
// 业务逻辑
const mylogic = function *(next) {
this.body = 'hello koa 1'
}
app.use(mylogger)
app.use(mytime)
app.use(mylogic)
app.listen(3000) // 让 Koa 启动内置 server
| ↑
| |
| |
| |
↓ |
GET / - 1ms
学习思路
Application 类型的实例属性和方法(主要用作 Web 应用的设置和启动) context 上下文对象, 它是包裹了 Node.js 的 http request 和 response 对象, 同时又提供了 Koa 的一些方法和属性供开发者使用 Koa request 对象。这个便是 context.request(Koa 1 里面是 this.request) ,是 Koa 为了开发方便提供的一些跟 http 请求相关的方法 Koa response 对象。这个便是 context.response(Koa 1 里面是this.response),是 Koa 为了开发方便提供的跟 http 响应有关的方法
request:指向Request对象 response:指向Response对象 req:指向Node的request对象 res:指向Node的response对象 app:指向App对象 state:用于在中间件传递信息
路由
视图渲染
总结
评论