egg

73 阅读2分钟

egg的学习

目录分成(官网)eggjs.org/zh-cn/basic…

  -   app/router.js 用于配置 URL 路由规则,
  -   app/controller/** 用于解析用户的输入,处理后返回相应的结果,
  -   app/service/** 用于编写业务逻辑层,可选,建议使用,
  -   app/middleware/** 用于编写中间件,可选,
  -   app/public/** 用于放置静态资源,可选,
  -   app/extend/** 用于框架的扩展,可选,
  -   config/config.{env}.js 用于编写配置文件,
  -   config/plugin.js 用于配置需要加载的插件,

  -   test/** 用于单元测试,具体参见[单元测试](https://eggjs.org/zh-cn/core/unittest.html)。
   -   app.js 和 agent.js 用于自定义启动时的初始化工作,可选,

项目中主要用的

app/controller/ 主要用于编写接口 用node编写接口 自己调用自己

框架推荐 Controller 层主要对用户的请求参数进行处理(校验、转换),然后调用对应的 [service](https://eggjs.org/zh-cn/basics/service.html) 方法处理业务,得到业务结果后封装并返回:

  1.  获取用户通过 HTTP 传递过来的请求参数。
  2.  校验、组装参数。
  3.  调用 Service 进行业务处理,必要时处理转换 Service 的返回结果让它适应用户的需求。
  4.  通过 HTTP 将结果响应给用户。

app/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 对象记录的日志,在日志前面会加上打印该日志的文件路径,以便快速定位日志打印位置。

但是现有项目封装的不一样,还在查找中。 如this.ctx.dayuAccessClient.quarkBaikeWorkerService.request 发起请求 this.ctx.user.workid 用户的workid 不涉及底层大致这两种开发需要