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
为关键字。
1. 本站所有素材(未指定商用),仅限学习交流。
2. 会员在本站下载的VIP素材后,只拥有使用权,著作权归原作者及码云笔记网所有。
3. 原创商用和VIP素材,未经合法授权,请勿用于商业用途,会员不得以任何形式发布、传播、复制、转售该素材,否则一律封号处理。
4. 本平台织梦模板仅展示和个人非盈利用途,织梦系统商业用途请预先授权。
码云笔记 » 15.Egg.js教程-Egg.js的Extend-application