app 对象指的是 Koa 的全局应用对象,全局只有一个,在应用启动时被建立。
访问方式:html
// app.js module.exports = app => { // 使用 app 对象 };
Context 指的是 Koa 的请求上下文,这是 请求级别 的对象,每次请求生成一个 Context 实例,一般咱们也简写成 ctx。在全部的文档中,Context 和 ctx 都是指 Koa 的上下文对象。
访问方式cookie
Request 对象和 Koa 的 Request 对象相同,是 请求级别 的对象,它提供了大量请求相关的属性和方法供使用。
访问方式
ctx.request
ctx 上的不少属性和方法都被代理到 request 对象上,对于这些属性和方法使用 ctx 和使用 request 去访问它们是等价的,例如 ctx.url === ctx.request.url。
Koa 内置的代理 request 的属性和方法列表:Koa - Request aliasesapp
Response 对象和 Koa 的 Response 对象相同,是 请求级别 的对象,它提供了大量响应相关的属性和方法供使用。
访问方式
ctx.response
ctx 上的不少属性和方法都被代理到 response 对象上,对于这些属性和方法使用 ctx 和使用 response 去访问它们是等价的,例如 ctx.status = 404 和 ctx.response.status = 404 是等价的。
Koa 内置的代理 response 的属性和方法列表:Koa Response aliases框架
Helper 函数用来提供一些实用的 utility 函数。
它的做用在于咱们能够将一些经常使用的动做抽离在 helper.js 里面成为一个独立的函数,这样能够用 JavaScript 来写复杂的逻辑,避免逻辑分散各处。另外还有一个好处是 Helper 这样一个简单的函数,能够让咱们更容易编写测试用例。
框架内置了一些经常使用的 Helper 函数。咱们也能够编写自定义的 Helper 函数。
访问方式
经过 ctx.helper 访问到 helper 对象,例如:koa
// 假设在 app/router.js 中定义了 home router app.get('home', '/', 'home.index'); // 使用 helper 计算指定 url path ctx.helper.pathFor('home', { by: 'recent', limit: 20 }) // => /?by=recent&limit=20
另外,还能够根据环境进行有选择的扩展,例如,只在 unittest 环境中提供 mockXX() 方法以便进行 mock 方便测试。函数
// app/extend/application.unittest.js module.exports = { mockXX(k, v) { } };
这个文件只会在 unittest 环境加载。
同理,对于 Application,Context,Request,Response,Helper 均可以使用这种方式针对某个环境进行扩展,更多参见运行环境。测试