Egg 框架提供了多种扩展点扩展自身的功能,在开发中,我们既可以使用已有的扩展 API 来方便开发,也可以对扩展点进行自定义扩展,进一步加强框架的功能,Egg 中的扩展点有以下5个:
1. Application
扩展文件为 application.js,存放于extend文件夹下。
// 外部可以通过 this.app.getUrl() 调用方法
module.exports = {
// 扩展一个方法获取config中配置的全局url
getUrl(param) {
// this 就是 app 对象,可以调用 app 上的其他方法,或访问属性
return this.config.url;
}
};
2. Context
扩展文件为context.js,存放于extend文件夹下。
// 外部可以通过this.app.getHost()调用方法
module.exports = {
// 扩展一个获取请求地址的方法
getHost(){
// this 就是 ctx 对象,可以调用 ctx 上的其他方法,或访问属性
return this.request.host;
}
}
3. Request
扩展文件为request.js,存放于extend文件夹下。
// 外部可以通过 this.ctx.request.getHeaderHost()调用方法
module.exports = {
// 扩展一个方法获取请求头的主机信息
getHeaderHost(param) {
return this.header.host;
},
};
4. Response
扩展文件为response.js,存放于extend文件夹下。
// 外部可以通过 this.ctx.response.getResponseBody() 调用方法
module.exports={
// 扩展一个获取响应主体的方法
getResponseBody(param) {
return this.body
}
}
5. Helper
扩展文件为helper.js,存放于extend文件夹下。
// 安装第三方模块
// npm i silly-datetime --save
var sd = require('silly-datetime');
// 在模板文件中的调用方式
// <span><%=helper.formatTime(list[i].dateline)%></span>
module.exports = {
// 扩展格式化时间的方法
formatTime(param) {
return sd.format(new Date(param * 1000), 'YYYY-MM-DD HH:mm');
}
};