Commit fc1ad8b0 authored by 郭志伟's avatar 郭志伟

docs(readme): 更新readme

parent c5f4dc3b
.DS_Store
node_modules
/dist
# local env files
.env.local
......
# webpack-cos-cdn-upload-plugin
# @qg/ui-request
webpack静态资源上传腾讯云插件
axios策略请求封装
## 如何打包
## 这是个啥
1. 全局安装rollup
2. npm run build
3. 更新版本号,npm publish 到私服
axios二次封装npm包,增强。
## 如何使用
## 为什么会存在这个包
平时使用axios请求接口,针对不同后端提供的接口,可能返回的数据格式不同,同时处理逻辑也不同,会造成编写不同的逻辑代码。
```js
// webpack config
这个包把axios公共的请求逻辑和拦截器进行整合,并暴露出业务逻辑处理配置,减少代码,使axios更好配置。
## 如何使用
const WebpackCosCdnUploadPlugin = require('webpack-cos-cdn-upload-plugin');
插件声明后,会直接返回axios实例,直接调用axios自带方法即可。
plugins: [
new WebpackCosCdnUploadPlugin()
]
```javascript
import HttpRequest from '@qg/ui-request';
import { Toast } from '@qg/cherry-ui';
import store from '@/store';
const http = new HttpRequest(
{},
{},
function(msg) {
Toast(msg);
},
function(loadingState) {
store.dispatch('change_loading', loadingState);
}
);
http.get(`${talosHost}/vcc/xyqb/recommend/goods-list`, {
customHeader: {
scDeviceId: await saDeviceId()
}
});
}
```
## Props
### options
对象中包含以下参数,如果不设置会走默认配置
| 名称 | 说明 | 默认值 |
| -------------- | ------------------------------------------------------------ | ----------------------------------------------- |
| SecretId | 腾讯云SecretId | `AKIDVlxtVqOK9i0wc0m0e7C5saATZnl2xvUx` |
| SecretKey | 腾讯云SecretKey | `NWQ3VlmWeFtIQHrDI6F9oCheMq41lGVV` |
| ImageBucket | 图片资源存放Bucket | `image-1258270469` |
| MiscBucket | 逻辑资源存放Bucket | `misc-1258270469` |
| ImageHost | 图片资源访问域名 | `https://img.lkbang.net` |
| MiscHost | 逻辑资源访问域名 | `https://misc.lkbang.net` |
| AppId | 腾讯云Bucket AppId | `1258270469` |
| Region | 腾讯云Bucket 存放区域 | `ap-beijing` |
| UseSTS | 是否使用临时授权,默认不使用,**临时授权有访问频率限制** | `false` |
| ProjectName | 自定义项目名称,会影响资源访问地址,默认以打包目录名称的md5 hash前8位作为项目名称 | `''` |
| TestEnvSkip | 测试环境是否上传,默认不上传 | `true` |
| PluginName | 插件名称 | `webpack-cos-cdn-upload-plugin` |
| PluginNameAbbr | 插件名称缩写,输出用 | `COS2CDN` |
| MiscExtMap | 逻辑资源扩展名名单,可将非逻辑资源扩展名,添加到此处 | `[ '.css', '.js', '.json', '.mainfest' ]` |
| FontsExtMap | 字体资源扩展名名单,字体文件单独存放 | `[ '.ttf', '.woff', '.woff2', '.otf', '.svg' ]` |
| IgnoreExtMap | 不上传资源扩展名名单 | `[ '.map' ]` |
## TODO
- [ ] upload方法可扩展
| 名称 | 类型 | 说明 | 默认值 |
| --------- | ---------- | ------------------------------------- | ------------------------------------------------------------ |
| strategy | _Object_ | 业务配置策略,默认值及格式见config.js | http://git.quantgroup.cn/zhiwei.guo/ui-request/blob/master/src/config.js |
| config | _Object_ | axios初始配置 | `{timeout: 15000}` |
| toastFn | _Function_ | 提示方法回调 | |
| loadingFn | _Function_ | loading方法回调,返回loading状态 | |
## Method
#### setStrategy
- **参数:**
- `{Object} [strategy] {} `
- `{Boolean} [cover] false`
- **用法:**
使用该方法将更新当前的请求策略, `cover``true`时,会覆盖掉原有的配置
```javascript
http.setStrategy({ service: {} });
```
#### setLoadingFn
- **参数:**
- `{Function} [fn]`
- **用法:**
使用该方法将更新当前的loading控制回调
```javascript
http.setLoadingFn(() => {});
```
#### setToastFn
- **参数:**
- `{Function} [fn]`
- **用法:**
使用该方法将更新当前的loading控制回调
```javascript
http.setToastFn(() => {});
```
\ No newline at end of file
"use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var t=e(require("axios"));function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function s(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?s(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):s(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var a=window.navigator.userAgent.toLowerCase(),u="micromessenger"==a.match(/MicroMessenger/i),c=/iphone|ipad|ipod/.test(a),l=/android/.test(a),d=function(e){var t=window.localStorage.getItem(e);try{return JSON.parse(t)}catch(e){return t}};function f(e){return e?Object.keys(e).map((function(t){return void 0===e[t]?"":encodeURIComponent(t)+"="+encodeURIComponent(e[t])})).filter((function(e){return null!=e})).join("&"):""}function h(){return u?d("vccChannel")||"":(l?"159905":c?"159904":d("vccChannel"))||""}function g(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(){};return{service:{response:function(t){var n=t.data,r=t.config;if(r.rawData)return[n,null];if(0===n.code&&0===n.business_code||"0000"===n.code&&"0000"===n.businessCode)return[n.data,null];var o=n.msg||"服务异常";r.hideToast&&n.noAlert||e(o);var s=new Error(o);return s.response=n,console.error(s),[null,s]},request:function(e){var t=e.method,n=e.hideVccChannel;return e.headers["X-Auth-Token"]=d("vccToken")||"",e.customHeader&&Object.assign(e.headers,e.customHeader),e.creditToken&&(e.headers["X-Auth-Token"]=d("creditToken")),n||(e.headers.vccChannel=h()),"post"===t&&e.emulateJSON&&(e.headers["Content-Type"]="application/x-www-form-urlencoded",e.data=f(e.data)),e}}}}var p={status:{400:"错误请求",401:"您未登录或登录超时,请重新登录",403:"拒绝访问",404:"请求错误,未找到该资源",405:"请求方法未允许",408:"请求超时",500:"服务器端出错",501:"网络未实现",502:"网络错误",503:"服务不可用",504:"网络超时",505:"http版本不支持该请求"}},v={default:{request:function(e){return e},response:function(e){return e.data}}},y={timeout:15e3},m=function(){function e(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){},a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:function(){};return n(this,e),this.CancelToken=t.default.CancelToken,this.instance=t.default.create(i(i({},y),o)),this.pending={},this.reqNum=0,this.timeId=null,this.toastFn=s,this.loadingFn=a,this.strategyModes=i(i({},g(this.toastFn)),r),this.strategyModes.default=v,this.initRequestInterceptors(),this.initResponseInterceptors(),this.instance}var o,s,a;return o=e,(s=[{key:"beforeRequest",value:function(){var e=this;this.reqNum++,clearTimeout(this.timeId),this.timeId=setTimeout((function(){e.loadingFn(!0)}),1300)}},{key:"afterRequest",value:function(){this.reqNum--,this.reqNum<=0&&(this.clearRequest(),this.loadingFn(!1))}},{key:"clearRequest",value:function(){clearTimeout(this.timeId)}},{key:"setStrategy",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.strategyModes=t?e:i(i({},this.strategyModes),e)}},{key:"setLoadingFn",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(){};this.loadingFn=e}},{key:"setToastFn",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(){};this.toastFn=e}},{key:"initRequestInterceptors",value:function(){var e=this;this.instance.interceptors.request.use((function(t){return!t.hideLoading&&e.beforeRequest(t.url||""),e.pending[t.url]&&e.pending[t.url]("取消重复请求"),t.cancelToken=new e.CancelToken((function(n){return e.pending[t.url]=n})),t.strategy||(t.strategy="service"),e.strategyModes[t.strategy].request&&(t=e.strategyModes[t.strategy].request(t)),t}),(function(e){return[null,e]}))}},{key:"initResponseInterceptors",value:function(){var e=this,t=this;this.instance.interceptors.response.use((function(e){return e.config.url&&(!e.config.hideLoading&&t.afterRequest(),delete t.pending[e.config.url||""]),t.strategyModes[e.config.strategy].response(e)}),(function(n){t.afterRequest();var r="",o=!0;"Network Error"!==n.message||n.response?n.response&&n.response.status?r=p.status[n.response.status]||"未知异常码: ".concat(n.response.status):"取消重复请求"===n.message&&(r="取消重复请求",o=!1):r="服务不可用",o&&e.toastFn(r||"服务异常,请稍后重试");var s=new Error(r);return console.error(s),[null,s]}))}}])&&r(o.prototype,s),a&&r(o,a),e}();module.exports=m;
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment