0.0.1 • Published 2 years ago
vue-utils-sixfat v0.0.1
简介
EventBus {docsify-ignore}
- 介绍: 事件监听与分发
- 不支持链式调用
引用
import { EventBus } from "@sweet-front/web-sdk"
使用示例
/* page1.js */
// 监听aaa事件
EventBus.$on("aaa", "key1", (e) => {
console.log(e, "1") // 不打印,因为有两个key1,最后一个 key1 会覆盖此处监听
})
EventBus.$on("aaa", "key1", (e) => {
console.log(e, "2") // 打印 anyData 2
})
EventBus.$on("aaa", "key2", (e) => {
console.log(e, "3") // 打印 anyData 3
})
/* page2.js */
// 触发aaa事件
EventBus.$emit("aaa", anyData)
// 取消aaa事件的监听
EventBus.$off("aaa")
// 取消所有事件的监听
EventBus.$off()
方法介绍
方法名称 | 说明 | 参数 | 类型 | 是否必填 | 默认值 |
---|---|---|---|---|---|
$on | 事件监听 | event, key, callback | String, String, Function | event:事件名,必填;key:事件 key, 非必填;callback:必填,回调参数 param | key = 'first' |
$emit | 事件触发 | event, param | String, Any | event:事件名,必填;param:回调参数,非必填 | param = '' |
$off | 取消事件监听 | event | String | event: 非必填,有事件名则取消单一事件监听,无事件名取消所有事件监听 | - |
Request {docsify-ignore}
- 介绍: 基于 axios 接口请求的封装,支持请求拦截和响应拦截,可以统一配置请求头,统一处理返回结果,统一增加请求中状态效果,支持接口防抖节流操作
- 实例对象部分方法支持链式调用
引用
import { Request } from "@sweet-front/web-sdk"
使用示例
初始化,配置请求拦截等处理,如:
import { Loading, Message } from "element-ui"
import { Request } from "@sweet-front/web-sdk"
Request.init({
// 设置请求前缀
baseUrl: "",
// 设置请求超时时长
timeout: 30000,
// 拦截请求,比如所有请求头增加token
handelRequestSync: (config) => {
config.headers.token = "1234567890"
return config
},
// 拦截响应,如接口结构code: 'success'的返回接口的data,走 then 方法,其他的throw整体信息,走 catch 方法
handelResponseSync: (res) => {
if (res.data.code === "success") {
return res.data.data
} else {
throw res.data
}
},
// 异常处理,如异常返回弹出错误信息
handelErrorSync: (error, config) => {
Message.error(error.message)
},
// 加载中处理,根据ui效果
handelLoadStartSync() {
return Loading.service({ text: "请求中" })
},
// 加载结束后的处理,如关闭加载中效果
handelLoadEndSync(loading) {
loading.close()
},
})
执行请求
import { Request } from "@sweet-front/web-sdk"
export default {
data() {
return {
aaa: {},
bbb: {},
}
},
mounted() {
Request.init()
this.aaa = Request.create() // 创建请求实例
this.bbb = Request.create() // 创建请求实例
// this.aaa.loading 默认 false, 开始请求后 loading 为 true, 请求完成 loading 为 false
this.aaa
.get(`/test/node/v1/devices1`)
.query({ a: 1, b: 1 }) // get请求参数
.serSilenceError() // 异常结构不处理
.calm() // 执行静默请求
.do() // 开始请求
.then((res) => {
console.log("a", res)
})
.catch((err) => {
console.log(err)
})
this.bbb
.get(`/test/node/v1/devices2`)
.query({ c: 1, d: 1 })
.do()
.then((res) => {
console.log("b", res)
})
// 如果不需要请求实例,建议封装实例返回,如:
const http = () => {
return Request.create()
}
http()
.get(`/test/node/v1/devices1`)
.query({ a: 1, b: 1 }) // get请求参数
.serSilenceError() // 异常结构不处理
.calm() // 执行静默请求
.do() // 开始请求
.then((res) => {
console.log("a", res)
})
.catch((err) => {
console.log(err)
})
},
}
中止请求
import { Request } from "@sweet-front/web-sdk"
export default {
data() {
return {
aaa: {},
}
},
mounted() {
Request.init()
this.aaa = Request.create() // 创建请求实例
// this.aaa.loading 默认 false, 开始请求后 loading 为 true, 请求完成 loading 为 false
this.aaa
.get(`/test/node/v1/devices1`)
.query({ a: 1, b: 1 }) // get请求参数
.serSilenceError() // 异常结构不处理
.calm() // 执行静默请求
.do() // 开始请求
.then((res) => {
console.log("a", res)
})
.catch((err) => {
console.log(err)
})
// /test/node/v1/devices1未返回前可中止,返回后执行此方法没有任何效果
// 中止信息可自定义
this.aaa.getSource().cancel("中止信息")
},
}
静态方法
静态方法 | 说明 | 参数 | 类型 |
---|---|---|---|
init | 初始化 Request 类,定义通用方法 | option | Object |
create | 创建请求实例,在初始化方法后调用,建议每个请求都创建一个实例,防止内部变量被覆盖 | - | - |
初始化参数
静态方法 Requset.init()
参数 Option 介绍
参数 | 说明 | 类型 | 回调参数 | 是否必填 | 默认值 |
---|---|---|---|---|---|
baseUrl | 所有请求前缀 | String | - | 非必填 | - |
timeout | 接口多久没返回算超时,单位毫秒 | Number | - | 非必填 | 30000 |
handelRequestSync | 请求拦截处理,回调参数包含请求信息,需 return config | Funciton | config | 非必填 | - |
handelResponseSync | 响应拦截处理,不包含 505,403 等异常请求结果,回调参数包含请求结果,需 return res.data 或其他 | Function | res | 非必填 | - |
handelErrorSync | 异常处理,可处理所有异常,回调参数 错误信息,请求信息 | Function | error,config | 非必填 | - |
handelLoadStartSync | 开始请求的处理,如加载 loading 效果,结束时需关闭则要 return loading 实例 | Function | - | 非必填 | - |
handelLoadEndSync | 结束请求的处理,回调参数 handelLoadStartSync 返回的 loading 实例 | Function | loading | 非必填 | - |
实例方法
实例 const xhr = Request.create() , xhr 的方法
方法名称 | 说明 | 参数 | 类型 | 是否必填 | 默认值 | 支持链式调用 |
---|---|---|---|---|---|---|
get | 定义请求方式,设置请求接口 | url | String | 必填 | - | √ |
post | 定义请求方式,设置请求接口 | url | String | 必填 | - | √ |
put | 定义请求方式,设置请求接口 | url | String | 必填 | - | √ |
delete | 定义请求方式,设置请求接口 | url | String | 必填 | - | √ |
headers | 定义请求头 | data | Object | 非必填 | - | √ |
query | 装载 get 请求数据 | body | Object | 非必填 | - | √ |
data | 装载 post 请求数据 | body | Object | 非必填 | - | √ |
forceQuery | 装载 post 请求数据,并转成 get 的参数拼接 | body | Object | 非必填 | - | √ |
formData | 装载 formdata 请求数据,并定义请求头 'Content-Type' = 'multipart/form-data' | body | Object | 非必填 | - | √ |
restURL | RESTFUL 模式匹配替换请求链接的参数 | body | Object | 非必填 | - | √ |
payload | 装载其他配置参数 | data | Object | 非必填 | - | √ |
expandConfig | 拓展 config,以注入的 config 为主 | data | Object | 非必填 | - | √ |
calm | 沉默执行,无需加载中提示 | - | - | - | - | √ |
turnTo | 转换请求参数 key 值的格式;type 转换的格式类型(枚举:s - 蛇形,t - 驼峰), exclude 排除在外的值,key 是 config 的属性 | data = {type, exclude , key } | { String, Array, String } | 必填 | - | √ |
serSilenceError | 是否执行接口错误处理 | - | - | - | - | √ |
throttle | 节流,时长内执行第一次 | data = {delay} | { Number } | 必填 | - | √ |
debounce | 防抖,时长内执行最后一次 | data = {delay} | { Number } | 必填 | - | √ |
loadAjax | 请求未返回不能再请求该接口 | - | - | - | - | √ |
do | 执行请求操作,放在链式的最后一环调用,返回 Promise 对象 | - | - | - | - | × |
getSource | 获取请求的标识,用于中止请求操作 | - | - | - | - | × |
Event {docsify-ignore}
- 介绍: 长连接通用方法库
- 实例部分方法支持链式调用
引用
import { WebSocket } from "@sweet-front/web-sdk"
使用示例
// 创建实例
let socket = new WebSocket()
socket.init({
socketUrl: `ws://localhost:9988/ws?og=123`,
autoCloseTime: 1000, // Number,无消息推送自动关闭长连接的时间(毫秒),0 不开启自动关闭
heartTime: 3000, // Number,心跳时间(毫秒),0 不开启心跳
heartData: { action: "do" }, // Any, 心跳发送的数据
reconnectTime: 0, // Number,连接失败时重连次数
historyList: [111, 1111], // Array,消息历史
isReverse: true, // Booble, 消息是否倒序
messageCb: (data) => {}, // Function,接收消息的回调方法
consoleOut: true, // Booble,控制台是否输出
})
// 重置连接次数并重连
socket.resetConTimes().reconnect()
// 重置连接次数
socket.resetConTimes()
// 重连
socket.reconnect()
// 断开长连接
socket.close()
// 开始心跳
socket.heartStart({time: 5000})
// 关闭心跳
socket.heartEnd()
// 获取连接状态
socket.getWsStatus()
// 获取历史
socket.getHistory()
实例方法
事件名称 | 说明 | 参数 | 参数类型 | 是否必填 | 支持链式调用 |
---|---|---|---|---|---|
init | 初始化 | 见初始化参数 | Object | 必填 | √ |
send | 向长连接发送数据 | Any | Any | 非必填 | √ |
close | 关闭连接 | - | - | - | √ |
reconnect | 重连 | - | - | - | √ |
resetConTimes | 重置连接次数 | - | - | - | √ |
heartStart | 开启心跳,传输心跳数据和时长, | {data, time} | Object = { Any, Number } | data: 非必填,默认 '';time: 非必填,默认 0 | √ |
heartEnd | 关闭心跳 | - | - | - | √ |
getWsStatus | 获取连接状态,状态介绍 | - | - | - | × |
getHistory | 获取消息历史 | - | - | - | × |
resetHistory | 重置推送记录 | arr | Array | 非必填,默认 [] | √ |
resetMessageCb | 重置回调方法 | fn | Function({e,news,history}) | 必填 | √ |
初始化参数
参数 | 说明 | 类型 | 可选值 | 默认值 |
---|---|---|---|---|
socketUrl | WebSocket 长连接地址(必填) | String | - | - |
historyList | 重置历史消息记录 | Array | - | [] |
heartTime | 心跳时间(毫秒),0 不开启心跳 | Number | 非负整数 | 0 |
heartData | 心跳发送的数据 | Any (object 会自动转成 string) | - | {action: 'ping'} |
autoCloseTime | 无消息推送自动关闭长连接的时间(毫秒),0 不开启自动关闭 | Number | 非负整数 | 0 |
reconnectTime | 连接失败时重连次数,0 不重连 | Number | 非负整数 | 0 |
messageCb | 接收消息的回调方法,回调参数 {e,news,history} = {推送信息,当前消息,消息合集} | Function | - | - |
openCb | 长连接开启的回调方法,回调参数 {e} = {连接信息} | Function | - | - |
closeCb | 长连接断开的回调方法,回调参数 {e} = {关闭信息} | Function | - | - |
isReverse | 最新消息在消息队列头部(true)or 尾部(false) | Booble | - | false |
consoleOut | 控制台调试输出 | Booble | - | false |
Utils {docsify-ignore}
- 介绍: 定义函数的节流、防抖、请求中事件。
- 不支持链式调用
引用
import { Utils } from "@sweet-front/web-sdk"
使用示例
// 3 秒内只能执行一次打印
Utils.throttle({ delay: 3000 }).then((res) => {
console.log(1111)
})
// 3 秒内没有第二次操作才执行一次打印
Utils.debounce({ delay: 3000 }).then((res) => {
console.log(1111)
})
Utils.firstToUpperSync("abc") // Abc
Utils.monthLastDateSync(2) // 28
Utils.getParamStrSync('https://www.baidu.com', { name: 'echo', age: 16 } // https://www.baidu.com?name=echo&age=1
Utils.getUrlOaramSync('name', 'https://www.baidu.com?name=echo&age=1') // echo
Utils.randomStringSync(10) // TfbP8DRXbF
let obj = { a: 1 }
let n1 = obj
let n2 = Utils.deepCloneSync(obj) // {a: 1}
console.log(n1 === obj, n2 === obj) // true false
Utils.filterQueryDataSync({ a: 1, b: 2, c: 3 }, 'a')) // {a: 1}
Utils.filterQueryDataSync({ a: 1, b: 2, c: 3 }, ['a', 'b']) // {a: 1, b: 2}
Utils.turnStringSync('nameCode', 's') // name_code
Utils.turnObjectSync({ nameCode: 'an', parentId: 12 }, 's', ['parentId']) // {name_code: 'an', parentId: 12}
方法介绍
方法名称 | 说明 | 参数 | 类型 | 是否必填 | 默认值 |
---|---|---|---|---|---|
throttle | 节流,时长内执行第一次,delay: 延时时长,毫秒, key: 标识此次操作, 返回 Promise 对象 | {delay, key} | { Number, String } | delay:必填;key:非必填 | key='default' |
debounce | 防抖,时长内执行最后一次,delay: 延时时长,毫秒, key: 标识此次操作, 返回 Promise 对象 | {delay, key} | { Number, String } | delay:必填;key:非必填 | key='default' |
firstToUpperSync | 首字母大写, 返回字符串 | str | String | 必填 | - |
monthLastDateSync | 返回某个月份的最后一天是几号, 返回数字 | month, year | Number, Number | month:必填;year:非必填 | year 默认今年 |
fullScreenSync | 全屏 | - | - | - | - |
exitFullScreenSync | 退出全屏 | - | - | - | - |
getParamStrSync | 拼接地址+参数字符串,url:要拼接的 url 地址, paramObj: 要拼接的对象,返回字符串 | url, paramObj | String, Object | 必填 | |
getUrlOaramSync | 获取地址参数,返回 key 对应的 value | key, url | String, String | 必填 | - |
randomStringSync | 随机生成指定位数的字符串, 返回字符串 | len | String | 非必填 | 32 |
deepCloneSync | 深拷贝对象,返回对象 | obj | Object | 必填 | - |
filterQueryDataSync | 过滤数据,对象按 key 值,数组按 value 值, 返回对象 | org, tar | Object/Array,Array/String | 必填 | - |
turnStringSync | 将字符串转成驼峰格式或蛇形格式,type: 转换格式,s - 蛇形,t - 驼峰, 返回字符串 | str, type | String, String | 必填 | - |
turnObjectSync | 将对象的 key 转成驼峰格式或蛇形格式,type: 转换格式,s - 蛇形,t - 驼峰,exclude:将某些 key 排除在外,返回对象 | obj, type, exclude | Object,String,Array | 必填 | - |
getScreenZoomSync | 按屏幕分辨率获取缩放比例,返回数字 | - | - | - | - |
uuidRandomUUIDSync | 获取随机的 uuid | - | - | - | - |
isQwxWorkSync | 区分是否为企微环境 | - | - | - | - |
0.0.1
2 years ago