[TOC=2,4]
`think.base`是基類,所有的類都會繼承該類,該類提供了一些基本的方法。
使用 ES6 語法繼承該類:
~~~
export default class extends think.base {
/**
* init method
* @return {} []
*/
init(){
}
}
~~~
`注`: 使用 ES6 里的類時不要寫`constructor`,把初始化的一些操作放在`init`方法里,該方法在類實例化時自動被調用,效果等同于`constructor`。
使用普通的方式繼承該類:
~~~
module.exports = think.Class(think.base, {
/**
* init method
* @return {} []
*/
init: function(){
}
})
~~~
### init(...args)
* `args`?{Array}
初始化方法,這里可以進行一些賦值等操作。
~~~
class a extends think.base {
init(name, value){
this.name = name;
this.value = value;
}
}
~~~
`注`:與`1.x`版本不同的是,`2.x`版本`init`方法不再支持返回一個`Promise`,一些通用操作放在`__before`魔術方法里進行。
### __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)
}
}
~~~
### __after()
后置魔術方法,在方法執行完成后在執行。
### filename()
* `return`?{String} 返回當前類文件的名稱
獲取當前類文件的名稱,不包含文件具體路徑和擴展名。
~~~
//假設當前類文件具體路徑為 /home/xxx/project/app/controller/user.js
class a extends think.base {
test(){
var filename = this.filename();
//returns "user"
}
}
~~~
### invoke(method, ...data)
* `method`?{String} 要調用的方法名稱
* `data`?{Array} 傳遞的參數
* `return`?{Promise}
調用一個方法,自動調用?`__before`?和?`__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 => {
});
~~~
~~~
//使用 */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](https://github.com/75team/www.thinkjs.org/tree/master/view/zh-CN/doc/2.0/api_think_base.md)
- 快速入門
- 介紹
- 創建項目
- 項目結構
- 代碼規范
- 升級指南
- 進階應用
- 模塊
- 控制器
- 視圖
- 配置
- 路由
- 模型
- 介紹
- 事務
- 關聯模型
- Mysql
- MongoDB
- SQLite
- Adapter
- 介紹
- Cache
- Session
- WebSocket
- Template
- 擴展功能
- thinkjs 命令
- 靜態資源訪問
- Middleware
- Service
- Cookie
- 錯誤處理
- 錯誤信息
- 數據校驗
- 國際化
- 路徑常量
- REST API
- 定時任務
- 線上部署
- 推薦模塊
- API
- think
- think.base
- think.http.base
- http
- controller
- rest controller
- model
- model.mongo
- middleware