egg框架各个上下文中的this中有些啥?

Posted IT飞牛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了egg框架各个上下文中的this中有些啥?相关的知识,希望对你有一定的参考价值。

Controller 实例

Controller 类继承于 egg.Controller,会有下面几个属性挂在 this 上。

  • this.ctx: 当前请求的上下文 Context 对象的实例,通过它我们可以拿到框架封装好的处理当前请求的各种便捷属性和方法。
  • this.app: 当前应用 Application 对象的实例,通过它我们可以拿到框架提供的全局对象和方法。
  • this.service:应用定义的 Service,通过它我们可以访问到抽象出的业务层,等价于 this.ctx.service 。
  • this.config:应用运行时的配置项。
  • this.logger:logger 对象,上面有四个方法(debug,info,warn,error),分别代表打印四个不同级别的日志,使用方法和效果与 context logger 中介绍的一样,但是通过这个 logger 对象记录的日志,在日志前面会加上打印该日志的文件路径,以便快速定位日志打印位置。

Service 实例

Service 实例,由于它继承于 egg.Service,故拥有下列属性方便我们进行开发:

  • this.ctx: 当前请求的上下文 Context 对象的实例,通过它我们可以拿到框架封装好的处理当前请求的各种便捷属性和方法。
  • this.app: 当前应用 Application 对象的实例,通过它我们可以拿到框架提供的全局对象和方法。
  • this.service:应用定义的 Service,通过它我们可以访问到其他业务层,等价于 this.ctx.service 。
  • this.config:应用运行时的配置项。
  • this.logger:logger 对象,上面有四个方法(debug,info,warn,error),分别代表打印四个不同级别的日志,使用方法和效果与 context logger 中介绍的一样,但是通过这个 logger 对象记录的日志,在日志前面会加上打印该日志的文件路径,以便快速定位日志打印位置。

Application

this 就是 app 对象,在其中可以调用 app 上的其他方法,或访问属性

Context

this 就是 ctx 对象,在其中可以调用 ctx 上的其他方法,或访问属性

  • ctx.app:有
  • ctx.service:有
  • ctx.model:有
  • ctx.helper:有
  • ctx.config:无

Helper

方法中this有以下属性:

  • app
  • config
  • ctx
  • service
  • helper中其他所有属性和属性方法都挂载在原型上,可以直接访问;

Request

// app/extend/request.js
module.exports = {
  get foo() {
    return this.get('x-request-foo');
  },
};

就可以这样使用啦:console.log(this.request.foo)

Response

// app/extend/response.js
module.exports = {
  set foo(value) {
    this.set('x-response-foo', value);
  },
};

就可以这样使用啦:this.response.foo = 'bar';

以上是关于egg框架各个上下文中的this中有些啥?的主要内容,如果未能解决你的问题,请参考以下文章

swift中快速框架中的描述和上下文有啥区别?

egg 官方文档之:框架扩展(ApplicationContextRequestResponseHelper的访问方式及扩展)

使用实体框架迁移时 SQL Server 连接抛出异常 - 添加代码片段

JavaScript夯实基础系列:this

请问g.drawImage(im,260,10,280,220,this)各个参数是啥意思?

安装 BlueJeans 会议 API 客户端时出现“pipenv 需要 #egg 片段以获取版本控制的依赖项”警告