使用 ES6 语法继承该类:

    : 使用 ES6 里的类时不要写 constructor,把初始化的一些操作放在 init方法里,该方法在类实例化时自动被调用,效果等同于 constructor

    1. module.exports = think.Class(think.base, {
    2. /**
    3. * init method
    4. * @return {} []
    5. */
    6. init: function(){
    7. }
    8. })

    :与 1.x 版本不同的是,2.x 版本 方法不再支持返回一个 Promise,一些通用操作放在 __before 魔术方法里进行。

    前置魔术方法,可以将一些通用的行为放在这里进行,如:controller 里检测用户是否登录

    1. export default class think.controller.base {
    2. /**
    3. * 前置魔术方法
    4. * @return {Promise} []
    5. */
    6. * __before(){
    7. let userInfo = yield this.session('userInfo');
    8. //如果没有登录,则跳转到登录页面
    9. if(think.isEmpty(userInfo)){
    10. return this.redirect('/logic');
    11. }
    12. this.assign('userInfo', userInfo)
    13. }
    14. }
    • method {String} 要调用的方法名称
    • data {Array} 传递的参数
    • return {Promise}
      调用一个方法,自动调用 after 魔术方法。不管方法本身是否返回 Promise,该方法始终返回 Promise

    方法本身支持是 */yieldasync/await

    1. //使用 async/await
    2. class Cls extends think.base {
    3. async getValue(){
    4. let value = await this.getValue();
    5. return value;
    6. }
    7. }
    8. let instance = new Cls();
    9. instance.invoke('getValue').then(data => {