ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
## 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扩展 ![](https://box.kancloud.cn/97f703c9fc1e9f0e06b9bf6ab78792a6_1168x668.png)[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方法') } } ~~~