think.base(ThinkJS基類)

2021-09-17 14:28 更新

think.base是基類,所有的類都會(huì)繼承該類,該類提供了一些基本的方法。

使用 ES6 語法繼承該類:

export default class extends think.base {
  /**
   * init method
   * @return {} []
   */
  init(){

  }
}

: 使用 ES6 里的類時(shí)不要寫constructor,把初始化的一些操作放在init方法里,該方法在類實(shí)例化時(shí)自動(dòng)被調(diào)用,效果等同于constructor。

使用普通的方式繼承該類:

module.exports = think.Class(think.base, {
  /**
   * init method
   * @return {} []
   */
  init: function(){

  }
})

init(...args)

  • args {Array}

初始化方法,這里可以進(jìn)行一些賦值等操作。

class a extends think.base {
  init(name, value){
    this.name = name;
    this.value = value;
  }
}

:與1.x版本不同的是,2.x版本init方法不再支持返回一個(gè)Promise,一些通用操作放在__before魔術(shù)方法里進(jìn)行。

__before()

前置魔術(shù)方法,可以將一些通用的行為放在這里進(jìn)行,如:controller 里檢測用戶是否登錄

export default class think.controller.base {
  /**
   * 前置魔術(shù)方法
   * @return {Promise} []
   */
  * __before(){
    let userInfo = yield this.session("userInfo");
    //如果沒有登錄,則跳轉(zhuǎn)到登錄頁面
    if(think.isEmpty(userInfo)){
      return this.redirect("/logic");
    }
    this.assign("userInfo", userInfo)
  }
}

__after()

后置魔術(shù)方法,在方法執(zhí)行完成后在執(zhí)行。

filename()

  • return {String} 返回當(dāng)前類文件的名稱

獲取當(dāng)前類文件的名稱,不包含文件具體路徑和擴(kuò)展名。

//假設(shè)當(dāng)前類文件具體路徑為 /home/xxx/app/controller/user.js
class a extends think.base {
  test(){
    var filename = this.filename();
    //returns "user"
  }
}

invoke(method, ...data)

  • method {String} 要調(diào)用的方法名稱
  • data {Array} 傳遞的參數(shù)
  • return {Promise}

調(diào)用一個(gè)方法,自動(dòng)調(diào)用 __before 和 __after 魔術(shù)方法。不管方法本身是否返回 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 => {

});
//使用 */yield
class Cls extends think.base {
  * getValue(){
    let value = yield this.getValue();
    return value;
  }
}
let instance = new Cls();
instance.invoke("getValue").then(data => {

});

文檔地址:https://github.com/75team/www.thinkjs.org/tree/master/view/zh-CN/doc/2.0/api_think_base.md

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)