将具体的业务逻辑放在 Service 中可以使 Controller 更加简洁,同时复用性也更强。
一个例子:
import { Service } from 'egg'
export default class Test extends Service {
public async sayHi(name: string) {
return `hi, ${name}`
}
}
Service 也是在处理每个请求时实例化,一个 Service 对象也有ctx
, app
, service
, config
和logger
这几个属性。
与 Controller 的定义一样,Service 需要放在 app/service 目录下,支持文件名到变量名的自动转换,支持嵌套。
定义 Service 类一般不需要实现构造函数,必要时使用下列构造函数:
export default class Test extends Service {
constructor(ctx: Context) {
super(ctx)
// dom something
}
}
评论区