## 1.application擴展
this.app.foo()調用
~~~
app/extend/application.js
module.exports ={
foo(){
//this就是app對象,在其中可以調用app上的其他方法,或訪問屬性
console.log(this)
}
}
//那么在其他文件中可以通過this.app.foo()調用這個方法
~~~
~~~
//app/controller/home.js
'use strict';
const Controller = require('egg').Controller;
class HomeController extends Controller {
async index() {
this.app.foo()
await this.ctx.render('index',{data:"首頁的世界"})
}
}
module.exports = HomeController;
~~~
## 2.context擴展
~~~
//app/extend/context.js
module.exports ={
getIp(){
return this.request
}
}
~~~
~~~
//在其他文件中通過this.ctx.foo()調用
this.ctx.getIp();
~~~
## 3.helper擴展
[extend](https://eggjs.org/zh-cn/basics/extend.html)
~~~
//app/extend/helper.js
在這個目錄helper.js中定義的方法,模板中可以直接使用
//例如定義一個格式化時間的方法
// app/extend/helper.js
/* 擴展中引入第三方模塊 */
const sd = require('silly-datetime');
module.exports = {
? ?formatTime(param) {
? ? ? ?/* 格式化日期 */
? ? ? ?return sd.format(new Date(param * 1000), 'YYYY-MM-DD HH:mm');
? },
? ?getHelperData(){
? ? ? ?return "我是helper里面的數據"
? }
};
~~~
~~~
npm i silly-datetime -S
~~~
~~~
模板文件中直接helper.formatTime()調用
<span><%= helper.formatTime(item.dateline)%></span>
~~~
~~~
//在controller中使用,helper掛載到了ctx上面
this.ctx.helper.getHelperData();
~~~
## 4.request的擴展
request掛載在ctx上面
~~~
//app/extend/request.js
/* 外部可以通過this.ctx.request.foo()調用 */
module.exports = {
foo(){
console.log(this)
console.log('擴展request方法')
}
}
~~~