使用 ES6 语法继承该类:
注
: 使用 ES6 里的类时不要写 constructor
,把初始化的一些操作放在 init
方法里,该方法在类实例化时自动被调用,效果等同于 constructor
。
module.exports = think.Class(think.base, {
/**
* init method
* @return {} []
*/
init: function(){
}
})
注
:与 1.x
版本不同的是,2.x
版本 方法不再支持返回一个 Promise
,一些通用操作放在 __before
魔术方法里进行。
前置魔术方法,可以将一些通用的行为放在这里进行,如:controller 里检测用户是否登录
export default class think.controller.base {
/**
* 前置魔术方法
* @return {Promise} []
*/
* __before(){
let userInfo = yield this.session('userInfo');
//如果没有登录,则跳转到登录页面
if(think.isEmpty(userInfo)){
return this.redirect('/logic');
}
this.assign('userInfo', userInfo)
}
}
- method {String} 要调用的方法名称
- data {Array} 传递的参数
- return {Promise}
调用一个方法,自动调用 和after
魔术方法。不管方法本身是否返回Promise
,该方法始终返回Promise
。
方法本身支持是 */yield
和async/await
。
//使用 async/await
class Cls extends think.base {
async getValue(){
let value = await this.getValue();
return value;
}
}
let instance = new Cls();
instance.invoke('getValue').then(data => {