codecamp

ThinkJS Service(服务)

Service

有时候项目里需要调用一些第三方的服务,如:调用 Github 相关接口。如果直接在 controller 里直接调用这些接口,一方面导致 controller 代码比较复杂,另一方面也不能更多进行代码复用。

对于这些情况,可以包装成 service 供 controller 里调用。

创建 service

可以通过命令 thinkjs service [name] 来创建命令,具体使用请见 扩展功能 -> ThinkJS 命令 -> 添加 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 模块下,可以就都可以方便的加载了。

ThinkJS Middleware(中间件)
ThinkJS Cookie
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }