-
前情提要-Express.js
-
回顾express基础代码的写法
app.use((req,res,next)=> {
if (req.path ==='/' && req.method ==='get') {
res.write('this is index');
next();
}
})
app.use((req,res,next)=> {
if (req.path ==='/about' && req.method ==='get') {
res.write('this is about');
next();
}
})
app.use((req,res,next)=> {
if (req.path ==='/others' && req.method ==='get') {
res.write('this is others');
next();
}
})
-
回顾express的中间件模型

-
Koa的发展历史
-
Express -
2010年6月,TJ开始编写Express -
2014年发展到v0.12,基本成熟,移交StrongLoop -
Koa -
2013年8月,TJ开始编写K0a -
2015年8月,Koa发布v1.0.0版本 -
Node.js -
2013年3月,Node.js v0.10发布 -
2014年12月,io.js不满Node.js的管理发起分裂 -
2015年2月,Node.js v0.12发布 -
2015年9月,Node.js与io.js合并为Node.js v4.0 -
Koa对Node.js的支特 -
2015年2月,Koa放弃对Node v0.11以下的支持,并开始支持io.js -
2015年10月,Koa放弃对Node v4.0以下的支持,并用ES6重写的所有代码,发布v2.0.0内测版
-
Koa与Express对比
-
编程模型不同
-
Express的中间件是线型的 -
Koa的中间件是U型 -
对语言特性的使用不同
-
Express使用回调函数next() -
Koa v1.x使用generator语法 -
Koa v2.X使用async/await语法 -
人们对于express还是Koa的选择
-
2011~2016年,大概率会使用Express -
2017年之后,可能会使用Koa(因为风口过了)
-
Koa的中间件模型

-
学习koa之前的准备工作
-
全局安装 -
安装node-dev代替node,代码一更新就自动重启 -
安装ts-node-dev代替ts-node,支持TS语言 -
代码 -
npm i -g node-dev ts-deno-dev
或者yarn global add node-dev ts-deno-dev
-
注意 -
如果用TS,需要运行 tsc-init
初始化tsconfig,json
-
tsc的安装方法是全局安装 typescript@3.8.3
-
还需要安装@types/koa -
新建koa-demo/server.ts,并且运行以下命令初始化项目
yarn add koa
yarn add --dev @types/koa
tsc --init
-
基础代码演示
import Koa from 'koa'
const app = new Koa()
app.use(async (ctx,next)=>{
ctx.body = 'hello'
await next()
ctx.body += ' Thailand'
})
app.use(async (ctx,next)=>{
ctx.body += ' world'
await next()
})
app.listen(3000)
-
ts-node-dev server.ts
运行起来之后,访问localhost:3000
得到以下结果

-
增加content-type,会发现字体发生变化
...
app.use(async (ctx,next)=>{
ctx.set('Content-Type', 'text/html; charset=utf-8')
await next()
})
app.listen(3000)

-
通过以上例子我们可以简单了解koa中间件的执行顺序,从上到下之后再从下到上
原文始发于微信公众号(前端之乐):深入理解Koa:中间件模型、API全览和与Express的对比(上)
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/274516.html