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.jsindex()方法里使用。

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为关键字。

「点点赞赏,手留余香」

0

给作者打赏,鼓励TA抓紧创作!

微信微信 支付宝支付宝

还没有人赞赏,快来当第一个赞赏的人吧!

声明:
1. 本站所有文章教程及资源素材均来源于网络与用户分享或为本站原创,仅限用于学习和研究。
2. 如果内容损害你的权益请联系客服QQ:1642748312给予处理。
码云笔记 » 15.Egg.js教程-Egg.js的Extend-application

发表评论

IT互联网行业相关广告投放 更专业 更精准

立即查看 联系我们