# mdclub-sdk-js **Repository Path**: zdhxiong/mdclub-sdk-js ## Basic Information - **Project Name**: mdclub-sdk-js - **Description**: MDClub 的 JavaScript SDK 代码 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: https://www.mdclub.org/ - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-09-02 - **Last Updated**: 2021-06-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## [MDClub 官网](https://mdclub.org) | [SDK 完整文档](https://mdclub.org/sdk-js/) # MDClub 的 Javascript 版 SDK ## 通过 CDN 引入 JS 文件 注意:这种方式只适用于浏览器环境。 在 HTML 中通过 ` ``` 然后就可以通过全局变量 `mdclubSDK` 访问 SDK 了。 你可以先通过 `mdclubSDK.defaults` 对 SDK 进行一些设置: ```js // 设置 api 地址(可选,默认为 {当前域名}/api) mdclubSDK.defaults.apiPath = 'https://example.com/api'; // 若浏览器不支持 patch, put, delete 请求,则需要将该选项设为 true(可选) mdclubSDK.defaults.methodOverride = true; // 设置全局回调函数(可选) mdclubSDK.defaults.beforeSend = function () {}; mdclubSDK.defaults.success = function (response) {}; mdclubSDK.defaults.error = function (errMsg) {}; mdclubSDK.defaults.complete = function () {}; ``` 然后可以如下调用 SDK 中的方法: ```js mdclubSDK.QuestionApi.getList({ question_id: 11 }) .then((questions) => { console.log(questions); }) .catch((errMsg) => { console.log(errMsg); }); ``` ## 在 ES6 模块化环境或小程序中使用 使用 `npm` 安装 SDK: ```bash npm install mdclub-sdk-js --save ``` SDK 同时支持浏览器环境和小程序环境,你需要先根据使用环境设置适配器。 若在小程序中使用,需要设置成小程序适配器。支持微信小程序、支付宝小程序、钉钉小程序、百度小程序(注意:当前代码还未在小程序中进行过测试): ```js import defaults from 'mdclub-sdk-js/es/defaults'; import MiniProgramAdapter from 'mdclub-sdk-js/es/adapter/MiniProgramAdapter'; defaults.adapter = new MiniProgramAdapter(); ``` 若在浏览器中使用,设置成浏览器适配器: ```js import defaults from 'mdclub-sdk-js/es/defaults'; import BrowserAdapter from 'mdclub-sdk-js/es/adapter/BrowserAdapter'; defaults.adapter = new BrowserAdapter(); ``` 若你的项目中已经通过 npm 安装了 jQuery、axios 之类的库,则可以设置对应的适配器,SDK 将直接使用对应的库提供的 ajax 方法。下面是所有支持的适配器: | 适配器 | 使用方法 | 说明 | | ---- | ---- | ---- | | `AxiosAdapter` | `import defaults from 'mdclub-sdk-js/es/defaults';`
`import AxiosAdapter from 'mdclub-sdk-js/es/adapter/AxiosAdapter';`
`defaults.adapter = new AxiosAdapter();` | 使用 [axios](https://github.com/axios/axios) 发送请求 | | `BrowserAdapter` | `import defaults from 'mdclub-sdk-js/es/defaults';`
`import BrowserAdapter from 'mdclub-sdk-js/es/adapter/BrowserAdapter';`
`defaults.adapter = new BrowserAdapter();` | 使用 [mdui.jq](https://github.com/zdhxiong/mdui.jq) 发送请求 | | `FetchAdapter` | `import defaults from 'mdclub-sdk-js/es/defaults';`
`import FetchAdapter from 'mdclub-sdk-js/es/adapter/FetchAdapter';`
`defaults.adapter = new FetchAdapter();` | 使用浏览器内置的 `fetch` 方法发送请求 | | `JQueryAdapter` | `import defaults from 'mdclub-sdk-js/es/defaults';`
`import JQueryAdapter from 'mdclub-sdk-js/es/adapter/JQueryAdapter';`
`defaults.adapter = new JQueryAdapter();` | 使用 [jQuery](https://github.com/jquery/jquery) 发送请求 | | `MiniProgramAdapter` | `import defaults from 'mdclub-sdk-js/es/defaults';`
`import MiniProgramAdapter from 'mdclub-sdk-js/es/adapter/MiniProgramAdapter';`
`defaults.adapter = new MiniProgramAdapter();` | 在小程序内使用 | 还可以选择对 SDK 进行一些全局设置,这些设置都是可选的。 ```js import defaults from 'mdclub-sdk-js/es/defaults'; // 设置 api 地址,默认为 {当前域名}/api defaults.apiPath = 'https://example.com/api'; // 若浏览器不支持 patch, put, delete 方法,则需要将该选项设为 true(可选) defaults.methodOverride = true; // 设置全局回调函数 defaults.beforeSend = () => {}; defaults.success = () => {}; defaults.error = () => {}; defaults.complete = () => {}; ``` 然后就可以调用 SDK 方法了 ```js import QuestionApi from 'mdclub-sdk-js/es/QuestionApi'; QuestionApi.getList({ question_id: 11 }) .then((questions) => { console.log(questions); }) .catch((errMsg) => { console.log(errMsg); }); ``` ## API 分类 SDK 中的方法按 API 的功能分类到了不同模块中,具体如下表所列: | API 模块 | 说明 | | ---- | ---- | | `AnswerApi` | 回答相关 API | | `ArticleApi` | 文章相关 API | | `CaptchaApi` | 验证码相关 API | | `CommentApi` | 评论相关 API | | `EmailApi` | 邮件相关 API | | `ImageApi` | 图片相关 API | | `NotificationApi` | 通知相关 API | | `OptionApi` | 配置相关 API | | `QuestionApi` | 提问相关 API | | `ReportApi` | 举报相关 API | | `StatsApi` | 数据统计相关 API | | `TokenApi` | 身份验证相关 API | | `TopicApi` | 话题相关 API | | `UserApi` | 用户相关 API | 各个模块中所有的方法详细说明,请参见 [SDK 文档](http://mdclub.site/sdk-js/) 。 若通过 CDN 引入 SDK,可以这样访问指定模块的方法: ```js mdclubSDK.QuestionApi.getList().then((response) => {}); ``` 若在 ES6 模块化环境中使用 SDK,可以这样访问指定模块的方法: ```js import QuestionApi from 'mdclub-sdk-js/es/QuestionApi'; QuestionApi.getList().then((response) => {}); ``` ## 错误代码 在 SDK 中,每一个错误代码都赋值给了一个常量。在开发中,你可以使用常量来代替错误代码,以便使你的代码拥有更好的可读性。 若通过 CDN 引入 SDK,可以这样访问错误代码常量: ```js // 以下对应错误代码 201001 mdclubSDK.errors.USER_NEED_LOGIN; ``` 若在 ES6 模块化环境中使用 SDK,可以这样访问错误代码常量: ```js import errors from 'mdclub-sdk-js/es/errors'; // 以下对应错误代码 201001 errors.USER_NEED_LOGIN; ``` 具体的常量和错误代码对应关系请 [参见文档](https://mdclub.org/sdk-js/#error-code) 。