# Service
[TOC=2,3]
有時候項目里需要調用一些第三方的服務,如:調用 Github 相關接口。如果直接在 controller 里直接調用這些接口,一方面導致 controller 代碼比較復雜,另一方面也不能更多進行代碼復用。
對于這些情況,可以包裝成 service 供 controller 里調用。
## 創建 service
可以通過命令?`thinkjs service [name]`?來創建命令,具體使用請見?[擴展功能 -> ThinkJS 命令 -> 添加 service](https://thinkjs.org/zh-CN/doc/2.0/thinkjs_command.html#添加-service)。
默認生成的 service 是一個 class,但有些 service 直接提供一些靜態方法即可,這時候可以把 class 改為對象即可。
## 加載 service
可以通過?`think.service`?加載一個 service,如:
~~~
export default class extends think.controller.base {
indexAction(){
let GithubService = think.service("github");
let instance = new GithubService();
}
}
~~~
如果想跨模塊加載 service,可以通過下面的方式:
~~~
export default class extends think.controller.base {
indexAction(){
let GithubService = think.service("github", "admin"); //加載 admin 模塊下的 github service
let instance = new GithubService();
}
}
~~~
> 注:?如果項目不是特別復雜,建議把 service 放在?`common`?模塊下,可以就都可以方便的加載了。
- 快速入門
- 介紹
- 創建項目
- 項目結構
- 代碼規范
- 升級指南
- 進階應用
- 模塊
- 控制器
- 視圖
- 配置
- 路由
- 模型
- 介紹
- 事務
- 關聯模型
- 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