# Service
[TOC=2,3]
有時(shí)候項(xiàng)目里需要調(diào)用一些第三方的服務(wù),如:調(diào)用 Github 相關(guān)接口。如果直接在 controller 里直接調(diào)用這些接口,一方面導(dǎo)致 controller 代碼比較復(fù)雜,另一方面也不能更多進(jìn)行代碼復(fù)用。
對(duì)于這些情況,可以包裝成 service 供 controller 里調(diào)用。
## 創(chuàng)建 service
可以通過(guò)命令?`thinkjs service [name]`?來(lái)創(chuàng)建命令,具體使用請(qǐng)見(jiàn)?[擴(kuò)展功能 -> ThinkJS 命令 -> 添加 service](https://thinkjs.org/zh-CN/doc/2.0/thinkjs_command.html#添加-service)。
默認(rèn)生成的 service 是一個(gè) class,但有些 service 直接提供一些靜態(tài)方法即可,這時(shí)候可以把 class 改為對(duì)象即可。
## 加載 service
可以通過(guò)?`think.service`?加載一個(gè) service,如:
~~~
export default class extends think.controller.base {
indexAction(){
let GithubService = think.service("github");
let instance = new GithubService();
}
}
~~~
如果想跨模塊加載 service,可以通過(guò)下面的方式:
~~~
export default class extends think.controller.base {
indexAction(){
let GithubService = think.service("github", "admin"); //加載 admin 模塊下的 github service
let instance = new GithubService();
}
}
~~~
> 注:?如果項(xiàng)目不是特別復(fù)雜,建議把 service 放在?`common`?模塊下,可以就都可以方便的加載了。
- 快速入門(mén)
- 介紹
- 創(chuàng)建項(xiàng)目
- 項(xiàng)目結(jié)構(gòu)
- 代碼規(guī)范
- 升級(jí)指南
- 進(jìn)階應(yīng)用
- 模塊
- 控制器
- 視圖
- 配置
- 路由
- 模型
- 介紹
- 事務(wù)
- 關(guān)聯(lián)模型
- Mysql
- MongoDB
- SQLite
- Adapter
- 介紹
- Cache
- Session
- WebSocket
- Template
- 擴(kuò)展功能
- thinkjs 命令
- 靜態(tài)資源訪問(wèn)
- Middleware
- Service
- Cookie
- 錯(cuò)誤處理
- 錯(cuò)誤信息
- 數(shù)據(jù)校驗(yàn)
- 國(guó)際化
- 路徑常量
- REST API
- 定時(shí)任務(wù)
- 線上部署
- 推薦模塊
- API
- think
- think.base
- think.http.base
- http
- controller
- rest controller
- model
- model.mongo
- middleware
