15.Egg.js教程-Egg.js的Extend-application
Egg 虽然给我们提供了很多内置的方法,但有时候还是感觉不够用,这时候就需要我们自己对 Egg 中的方法进行扩展和编写了。
多种对象进行扩展
Egg.js 可以对内部的五种对象进行扩展,我也作了一个表格。给出了可扩展的对象、说明、this 指向和使用方式。

对 application 对象的方法扩展
本文重点学习一下对application 对象的扩展。需求是作一个全局的获取时间的扩展。比如用app.currentTime()这个全局的方法,就可以获得当前时间,并显示在页面上。
按照 Egg 的约定,扩展的文件夹和文件的名字必须是固定的。比如我们要对application扩展,要在/app目录下,新建一个/extend文件夹,然后在建立一个application.js文件。
这里给出具体代码:
module.exports = {
//方法扩展
currentTime(){
const current = getTime();
return current;
}
};
function getTime(){
let now = new Date();
let year = now.getFullYear(); //得到年份
let month = now.getMonth()+1; //得到月份
let date = now.getDate(); //得到日期
let hour= now.getHours(); //得到小时数
let minute= now.getMinutes(); //得到分钟数
let second= now.getSeconds(); //得到秒数
let nowTime = year+'年'+month+'月'+date+'日 '+hour+':'+minute+':'+second;
return nowTime;
}
这样就完成了 一个application对象的方法扩展。扩展写好后,不用再做过多的配置,直接在一个 Controller 方法里使用就可以了。比如我们要在/app/controller/mybj.js的index()方法里使用。
async index() {
const { ctx ,app } = this;
await ctx.render(
'mybj.html',{
nowTime: app.currentTime(),
})
}
这样就可以在/app/view/mybj.html模板中使用了。
<%=nowTime%>
这是 Egg 中对application方法的扩展,我们再来看看对属性的扩展。
对 application 对象的属性扩展
对属性( property) 的扩展的关键字是get,也需要写在application.js文件里。
module.exports = {
//方法扩展
currentTime(){
const current = getTime();
return current;
},
//属性扩展
get timeProp(){
return getTime();
}
};
加入 get,就会默认是一个属性,可以直接以属性的形式在controller方法里进行调用。
Egg.js 中的扩展是经常使用的,所以你有必要多练习几遍。
总结
本文我们主要学习了如何扩展application中的方法扩展和属性扩展。写扩展时要遵照 Egg 的约束,方法扩展和平时写的方法一样,属性扩展以get为关键字。
以上关于15.Egg.js教程-Egg.js的Extend-application的文章就介绍到这了,更多相关内容请搜索码云笔记以前的文章或继续浏览下面的相关文章,希望大家以后多多支持码云笔记。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 admin@mybj123.com 进行投诉反馈,一经查实,立即处理!
重要:如软件存在付费、会员、充值等,均属软件开发者或所属公司行为,与本站无关,网友需自行判断
码云笔记 » 15.Egg.js教程-Egg.js的Extend-application

微信
支付宝