koa-Nodejs进阶基础技能—Koa基本使用
一、简介
koa 是由 Express 原班人马打造的,致力于成为一个更小、更富有表现力、更健壮的 Web 框架。使用 koa 编写 web 应用,通过组合不同的 generator,可以免除重复繁琐的回调函数嵌套,并极大地提升错误处理的效率。koa 不在内核方法中绑定任何中间件,它仅仅提供了一个轻量优雅的函数库,使得编写 Web 应用变得得心应手。
二、安装
Koa需要 node v7.6.0或更高版本来支持ES2015、异步方法
你可以安装自己支持的node版本。
$ nvm install 7
$ npm i koa
$ node my-koa-app.js
二、Babel异步函数
在node < 7.6的版本中使用async 函数, 我们推荐使用babel's require hook.
require('babel-core/register');
// require the rest of the app that needs to be transpiled after the hook
const app = require('./app');
为了解析和转译异步函数,你应该至少有transform-async-to-generator or transform-async-to-module-method这2个插件。例如,在你的.babelrc文件中,应该有如下代码
{
"plugins": ["transform-async-to-generator"]
}
也可以使用env preset并设置"node": "current"来替代.
三、应用程序
Koa 应用程序是一个包含一组中间件函数的对象,它是按照类似堆栈的方式组织和执行的。 Koa 类似于你可能遇到过的许多其他中间件系统,例如 Ruby 的 Rack ,Connect 等,然而,一个关键的设计点是在其低级中间件层中提供高级“语法糖”。 这提高了互操作性,稳健性,并使书写中间件更加愉快。
这包括诸如内容协商,缓存清理,代理支持和重定向等常见任务的方法。 尽管提供了相当多的有用的方法 Koa 仍保持了一个很小的体积,因为没有捆绑中间件。
必修的 hello world 应用:
四、级联
Koa 中间件以更传统的方式级联,您可能习惯使用类似的工具 - 之前难以让用户友好地使用 node 的回调。然而,使用 async 功能,我们可以实现 “真实” 的中间件。对比 Connect 的实现,通过一系列功能直接传递控制,直到一个返回,Koa 调用“下游”,然后控制流回“上游”。
下面以 “Hello World” 的响应作为示例,首先请求流通过 x-response-time 和 logging 中间件来请求何时开始,然后继续移交控制给 response 中间件。当一个中间件调用 next() 则该函数暂停并将控制传递给定义的下一个中间件。当在下游没有更多的中间件执行后,堆栈将展开并且每个中间件恢复执行其上游行为。
五、设置
应用程序设置是 app 实例上的属性,目前支持如下:
app.env 默认是 NODE_ENV 或 "development"
app.proxy 当真正的代理头字段将被信任时
app.subdomainOffset 对于要忽略的 .subdomains 偏移[2]
app.context
app.context 是从其创建 ctx 的原型。您可以通过编辑 app.context 为 ctx 添加其他属性。这对于将 ctx 添加到整个应用程序中使用的属性或方法非常有用,这可能会更加有效(不需要中间件)和/或 更简单(更少的 require()),而更多地依赖于ctx,这可以被认为是一种反模式。
例如,要从 ctx 添加对数据库的引用:
注意:
ctx 上的许多属性都是使用 getter ,setter 和 Object.defineProperty() 定义的。你只能通过在 app.context 上使用 Object.defineProperty() 来编辑这些属性(不推荐)。查阅 https://github.com/koajs/koa/issues/652.
安装的应用程序目前使用其父级的 ctx 和设置。 因此,安装的应用程序只是一组中间件。
六、最后
Koa是基于Node.js的下一代web框架,由Express团队打造,特点:优雅、简洁、灵活、体积小。几乎所有功能都需要通过中间件实现。
- 广州慕金母狗彭瑞琪 重庆某艺术学院 身材真好,不知吃啥长大的 真羡慕这个金主
- 杭州劳斯莱斯车主群大瓜!睡车友老婆不自知 正主在外苦等一夜!
- 青岛保时捷销冠牟倩文!买车就给上!一年业绩170辆!360天全年无休!
- 许昌职业学院大二学妹许佳园上午陪学长上课 晚上陪学弟上床!堪称时间管理大师
- 【黑料】独家吃瓜爆料,江山市场监管局换妻事件!超级骚的母狗熟女人妻!
- 极品露出 大爷这鞋能修吗 多少钱 大姐闹市街边修鞋 边唠嗑边露出鲍鱼还紫薇
- 香港40岁辣妈“晒胸”成瘾,走遍公共场所拍120多张“裸照”,警方已拘捕
- 极品稀缺重磅 癖好特殊专攻TS大神【BJ大佬】私拍,记录各地9位顶级露脸TS美好性瞬间
- 山东真实母狗老师 林萌萌 白天为人师表的老师晚上是个精盆,只做内啡肽的忠诚信徒!
- 全网疯传 青岛奥斯卡酒吧 妹子当众给一个胖子口交 后被围观者制止
- 独家曝光!天津工程职粉技术学院造价18-3班王昕旭(已毕业)私密视频外泄(附生活照)
- 江苏响水城管局副局长苏阳与小学教师王海平偷情车震中毒死亡事件
-
广州慕金母狗彭瑞琪 重庆某艺术学院 身材真好,不知吃啥长大的 真羡慕这个金主
2015.12.16 -
杭州劳斯莱斯车主群大瓜!睡车友老婆不自知 正主在外苦等一夜!
2015.12.16 -
青岛保时捷销冠牟倩文!买车就给上!一年业绩170辆!360天全年无休!
2015.12.16 -
许昌职业学院大二学妹许佳园上午陪学长上课 晚上陪学弟上床!堪称时间管理大师
2015.12.16