egg官⽅⽂档之:框架扩展(Application、Context、Request、
Res。。。
地址:
Application
app 对象指的是 Koa 的全局应⽤对象,全局只有⼀个,在应⽤启动时被创建。
访问⽅式:
ctx.app
Controller,Middleware,Helper,Service 中都可以通过 this.app 访问到 Application 对象,例如 fig 访问配置对象。
在 app.js 中 app 对象会作为第⼀个参数注⼊到⼊⼝函数中
// app.js
// 使⽤ app 对象
};
Context
Context 指的是 Koa 的请求上下⽂,这是请求级别的对象,每次请求⽣成⼀个 Context 实例,通常我们也简写成 ctx。在所有的⽂档
中,Context 和 ctx 都是指 Koa 的上下⽂对象。
访问⽅式
middleware 中 this 就是 ctx,例如 ('foo')。
controller 有两种写法,类的写法通过 ,⽅法的写法直接通过 ctx ⼊参。
helper,service 中的 this 指向 helper,service 对象本⾝,使⽤ 访问 context 对象,例如 ('foo')。Request
Request 对象和 Koa 的 Request 对象相同,是请求级别的对象,它提供了⼤量请求相关的属性和⽅法
供使⽤。
访问⽅式
ctx 上的很多属性和⽅法都被代理到 request 对象上,对于这些属性和⽅法使⽤ ctx 和使⽤ request 去访问它们是等价的,例如 ctx.url === quest.url。
Koa 内置的代理 request 的属性和⽅法列表:
Response
Response 对象和 Koa 的 Response 对象相同,是请求级别的对象,它提供了⼤量响应相关的属性和⽅法供使⽤。
访问⽅式
ctx 上的很多属性和⽅法都被代理到 response 对象上,对于这些属性和⽅法使⽤ ctx 和使⽤ response
去访问它们是等价的,例如 ctx.status = 404 和 sponse.status = 404 是等价的。
Koa 内置的代理 response 的属性和⽅法列表:
Helper
Helper 函数⽤来提供⼀些实⽤的 utility 函数。
它的作⽤在于我们可以将⼀些常⽤的动作抽离在 helper.js ⾥⾯成为⼀个独⽴的函数,这样可以⽤ JavaScript 来写复杂的逻辑,避免逻辑分散各处。另外还有⼀个好处是 Helper 这样⼀个简单的函数,可以让我们更容易编写测试⽤例。spring framework扩展点
框架内置了⼀些常⽤的 Helper 函数。我们也可以编写⾃定义的 Helper 函数。
访问⽅式
通过 ctx.helper 访问到 helper 对象,例如:
// 假设在 app/router.js 中定义了 home router
<('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
mockXX(k, v) {
}
};
这个⽂件只会在 unittest 环境加载。
同理,对于 Application,Context,Request,Response,Helper 都可以使⽤这种⽅式针对某个环境进⾏扩展,更多参见。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论