Egg.js 通过 extend 实现 日期格式化

1.创建 helper 扩展方法

app/extend/helper.js

/**
 * app/extend/helper.js
 * 扩展里面引入第三方模块
 * https://www.npmjs.com/package/silly-datetime
 * 1、yarn add silly-datetime
 * 2、var sd = require(‘silly-datetime‘);
 * 3、sd.format(new Date(), ‘YYYY-MM-DD HH:mm‘);
 */

let sd = require(‘silly-datetime‘);

module.exports = {
  formatTime(param) {
    // this 是 helper 对象,在其中可以调用其他 helper 方法
    // this.ctx => context 对象
    // this.app => application 对象

    // 格式化日期 param -- 时间戳
    return sd.format(new Date(param*1000), ‘YYYY-MM-DD HH:mm‘);
  },
  getHelperData() {
    return ‘我是helper里面的数据‘;
  }
};

2.在 controller 中调用

// 调用extend里面扩展的helper的方法
console.log(this.ctx.helper.getHelperData());

3.在 view 中调用

<span>---<%=helper.formatTime(list[i].dateline)%></span>

4.其他扩展

app/extend/application.js

/**
 * app/extend/application.js
 * 外部可以通过 this.app.foo() 调用
 */
module.exports = {
  foo(param) {
    // this 就是 app 对象,在其中可以调用 app 上的其他方法,或访问属性

    return this.config.api;
  },
};

app/extend/context.js

/**
 * app/extend/context.js
 * 外部可以通过 this.ctx.getHost() 调用
 */
module.exports = {
  getHost(param) {
    // this 就是 ctx 对象,在其中可以调用 ctx 上的其他方法,或访问属性

    return this.request.host;
  },
};

app/extend/request.js

// app/extend/request.js
module.exports = {
  foo() {
    return this.header.host;
  },
};

5.调用

// 调用extend里面扩展的application
console.log(this.app.foo());

// 调用extend里面扩展的ctx
console.log(this.ctx.getHost());

// 调用extend里面扩展的helper的方法
console.log(this.ctx.helper.getHelperData());

// 调用extend里面扩展的request的方法
console.log(this.ctx.request.foo());

.