扩展

内置对象扩展

在基于 Egg 的框架或者应用中,我们可以通过定义 app/extend/{application,context,request,response}.js 来扩展 Koa 中对应的四个对象的原型,通过这个功能,我们可以快速的增加更多的辅助方法,例如我们在 app/extend/context.js 中添加判断是否是iOS的扩展:

app/extend/context.js

module.exports = {
  get isIOS() {
    const iosReg = /iphone|ipad|ipod/i;
    return iosReg.test(this.get('user-agent'));
  },
};

助手函数扩展

比如我们需要一个友好时间显示的扩展, 我们可以创建一个 helper.js, 具体步骤如下:

首先安装 moment

$ yarn add moment

app/extend/helper.js 中:

const moment = require('moment');
exports.relativeTime = time => moment(new Date(time)).fromNow();

在控制器中使用

在 Controller 中使用到刚才定义的Context扩展和Helper扩展:

app/controller/home.js

exports.handler = ctx => {
  ctx.body = ctx.isIOS
    ? 'Your operating system is iOS.'
    : 'Your operating system is not iOS.';
  ctx.helper.relativeTime(new Date())
};

在模板中使用

在模板中使用到刚才定义的Context扩展和Helper扩展:

<span>{{ ctx.isIOS }}</span>
<span>{{ helper.relativeTime(new Date()) }}</span>

MIT Licensed | Copyright © 2018-present 滇ICP备16006294号

Design by Quanzaiyu | Power by VuePress