(一)egg-基础功能

快速上手

npm install egg --type = simple

可选的骨架类型
simple - 简单的egg应用程序骨架
empty - 空的egg应用程序骨架
plugin - egg plugin骨架
Framework - egg framework骨架

目录结构

`app/router.js` 用于配置 URL 路由规则
`app/controller/**` 用于解析用户的输入,处理后返回相应的结果
`app/service/**` 用于编写业务逻辑层
`app/middleware/**` 用于编写中间件
`app/public/**` 用于放置静态资源
`app/extend/**` 用于框架的扩展
`config/config.{env}.js` 用于编写配置文件
`config/plugin.js` 用于配置需要加载的插件
`test/**` 用于单元测试
`app.js 和 agent.js` 用于自定义启动时的初始化工作
`app/schedule/**` 用于定时任务
`app/view/**` 用于放置模板文件
`app/model/**` 用于放置领域模型

内置对象

(1)Application

全局应用对象,可以将一些全局的方法和对象挂载到上面,

事件
application包含的事件有

  • server 在http服务完成启动之后,将HTTP server通过该事件暴露出来。
  • error 异常事件
  • request 收到请求触发
  • response 响应请求触发

一般需要在应用启动期间进行一些初始化工作,初始化完成之后才可对外提供服务,egg框架提供了统一的入口文件-app.js进行启动过程的自定义,app.js返回一个boot类,可以在该类的声明周期方法中执行启动应用的初始化工作。

包含的声明周期方法有:

生命周期方法 说明
configDidLoad 配置文件加载完成
configWillLoad 配置文件即将加载,修改配置文件的最终时机
didLoad 文件加载完成
willReady 插件启动完毕
didReady worker准备就绪
serverDidReady 应用启动完成
beforeClose 应用即将关闭

Application对象的获取方式

  • 作为参数
  • 在context对象上,通过ctx.app
  • 在继承于controller和service基类的实例中,可以通过this.app访问到

(2)Context

context是请求级别的对象,收到的用户请求会实例化一个context对象,该对象封装了用户的请求信息,框架将所有的Service挂载在context实例上。

获取方式

  • 在controller中获取 this.ctx
  • 在sevice中获取 this.ctx
  • middleware中,this或ctx
  • 在非用户请求情况下需要访问service/model等context实例上的对象
// app.js
module.exports = app => {
   
  app.beforeStart(async () => {
   
    const ctx = app.createAnonymousContext();
    // preload before app start
    await ctx.service.posts.load();
  });
}
  • 定时任务,使用ctx作为参数

(3)response & request

获取方式

  • ctx.request
  • ctx.response
    获取post的body内容应该使用ctx.request.body

(4)Controller

egg框架提供了controller基类,并推荐所有的controller均继承该基类实现。
其包含如下属性:

  • ctx :当前请求的context实例
  • app:application实例
  • config:应用的配置
  • service:应用的所有service
  • logger:日志对象

(5)service & helper & Config & logger

  • sevice:内置service基类,并推荐所有service继承此基类 属性同controller

  • helper:提供一些实用的utility函数,可以通过ctx.helper获取请求的helper实例
    可以通过框架扩展的形式自定义helper的方法。

  • config:通过app.config获取到config对象,也可以在controller sevice helper上通过this.config获取

  • logger: 包含以下几种方法

logger.debug();  logger.info();  logger.warn();   logger.error();

中间件

中间件的编写

(1)写法

// app/middleware/gzip.js
const isJSON = 
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值