koa2 从入门到进阶(一)-入门
Koa 是基于 Node.js 的下一代 Web 开发框架,官网第一句就是这句话。官方站点:https://koa.bootcss.com/。学 Koa 之前应对 Node.js 有一定基础。
Node.js 官方 API 以 callback 异步为主,容易遇到两件事:回调嵌套,以及异步函数里同步调用 callback 造成的不一致性。Koa 就是为解决这些问题出现的。
Koa 由 Express 原班人马打造,内核不绑定中间件,只提供一套更小、更有表现力的函数库。开发思路和 Express 接近,最大特点是用 async/await 避开异步嵌套,并提升错误处理效率。
一、为什么需要 Koa2
Koa2 要求 Node.js 版本高于 v7.6。从 7.6 起 Node 才完整支持 async/await,Koa2 才能完整体验。Express 写法里常见 req / res;Koa 把请求和响应收进一个 ctx(context),用 ctx.body 往前端写数据。
| 对比项 | Express | Koa2 |
|---|---|---|
| 异步写法 | callback / 中间件 next | async/await,避免嵌套 |
| 上下文 | req、res 分开 | 统一的 ctx |
| 内核 | 内置较多能力 | 不绑定中间件,按需安装 |
| 写响应 | res.send("hello word") | ctx.body = "hello word" |
二、安装与项目目录
安装方式和其它 npm 模块一样。加 --save 会自动改 package.json,写入依赖。
实战步骤:先建项目目录,执行 npm init 一路回车,得到基础 package.json;再 npm install koa --save 引入 Koa;最后在目录里建 app.js 写程序。流程和 Express 项目类似。
最终项目目录如下:
三、最小可运行示例
在 app.js 里写一个最简单的案例:先 require("koa"),再 new koa() 得到实例,然后挂一个异步中间件,用 ctx.body 返回数据,最后 app.listen(3000) 监听端口。
Koa 这边用 async (ctx) => {} 与前端建立连接。参数是 ctx,不是 Express 的 req/res。把程序跑起来,浏览器访问 localhost:3000 就能看到返回内容:

这样就完成了一个最基本的 Koa 小案例。后续文章会继续讲路由、中间件、模板和请求参数。
原文链接:https://www.cnblogs.com/weijiutao/p/10688805.html。参考:https://www.itying.com/koa/article-index-id-78.html。
一句话总结:Koa2 用 ctx + async/await 替代 Express 的回调嵌套;Node ≥ 7.6 安装 koa 后,app.use 里写 ctx.body 再 listen(3000) 就能跑起来。
转载请注明来源:koa2 从入门到进阶(一)-入门







