UNPKG

utils94

Version:

日常开发使用工具库

266 lines (210 loc) 9.57 kB
# utils94(工具类函数集结) | 工具类 | 功能 | | ---------- | --------------------- | | WeChat | 微信端jssdk处理 | | dom | dom 相关 | | bom | bom 相关 | | date | 时间相关(日历生成) | | feature | 功能 | | storage | 缓存 | | platform | 平台判断 | ## 快速使用 ``` yarn add utils94 import Utils from 'utils94' import { WeChat, dom, bom... } from 'utils94' ``` ## 1. WeChat - new WeChat(WeChatJsSdk, [{title,desc,link,imgUrl},{title,link,imgUrl}], requset) 初始化 ```javascript import {WeChat} from 'utils94' // 朋友,QQ分享内容 const friendShareConfig = { title: '微信分享title', desc: '详细', link: window.location.href, imgUrl:'' } // 朋友圈,QQ空间分享内容 const momentShareConfig = { title: '', // 分享标题 link: '', // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致 imgUrl: '', // 分享图标 } const request =async (body) => { /** * !划重点!!!! * ios中,url 必须是初次进入的url. 且ios 仅需配置一次即可. * android中, 需要每次进入新的页面都需要配置一次. 每次配置 * url 需要过滤 #及之后的参数 **/ const {url, jsApiList} = body const config = await api.initJsSdk(body) /** config:{ debug?: boolean; // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId: string | number; // 必填,公众号的唯一标识 timestamp: number | string ; // 必填,生成签名的时间戳 nonceStr: string; // 必填,生成签名的随机串 signature: string;// 必填,签名 jsApiList: string[] // 必填,需要使用的JS接口列表 } **/ return config } // 初始化配置(必须) const wx = new WeChat( WxChatJsSdk, // 微信js [ friendShareConfig, momentShareConfig ], request ) ``` - pre 前置预检, - 返回Promise ```javascript wx.pre().then(res => { // 配置成功 // dosomething }).catch(err=>{ // 配置失败 }) ``` - share( [{title,desc,link,imgUrl},{title,link,imgUrl}], filter:string[]) 分享设置,filter可过滤掉link上携带的query字段,如‘token’; - 无返回 ```javascript wx.pre().then(()=> { // 当momentShareConfig 不传时,默认 friendShareConfig 替代 wx.share([friendShareConfig, momentShareConfig], ['token']) }) ``` - autoShare( [{title,desc,link,imgUrl},{title,link,imgUrl}], filter:string[]) 自动分享设置,filter可过滤掉link上携带的query字段,如‘token’; - 返回Promise ```javascript // 当momentShareConfig 不传时,默认 friendShareConfig 替代 wx.autoShare([friendShareConfig, momentShareConfig], ['token']).then(()=> { // dosomething }) ``` ## 2. dom - on(element, event, function, object | boolean) 事件监听 - 返回 监听函数 [关于passive 的情况,点击了解](https://nick-qi.github.io/base/base.html#addeventlistener-passive-%E4%BC%98%E5%8C%96%EF%BC%88%E5%88%92%E9%87%8D%E7%82%B9%EF%BC%89) ```javascript import { dom } from 'utils94' // ! 自动检查并开启passive 优化 // 事件监听 dom.on( window, 'scroll', e => { /* dosomething */}, { capture: false, // boolean 表示 listener 会在该类型的事件捕获阶段传播到该 EventTarget 时触发。 once: false, // boolean 表示 listener 在添加之后最多只调用一次。如果是 true, listener 会在其被调用之后自动移除。 passive: true // boolean 设置为true时,表示 listener 永远不会调用 preventDefault()。如果 listener 仍然调用了这个函数,客户端将会忽略它并抛出一个控制台警告。 } ) dom.on( window, 'scroll', e => { /* dosomething */}, false // false: 冒泡 默认; true:捕获 ) ``` - off(element, event, function, object | boolean) 移除事件监听 - 返回 移除监听函数 ```javascript import { dom } from 'utils94' // 移除事件监听 dom.off( window, 'scroll', e => { /* dosomething */}, { capture: false, once: false, passive: true } ) dom.off( window, 'scroll', e => { /* dosomething */}, false ) ``` ## 3. bom | 函数 | 功能 | | ---------------------------------- | -------------- | | copy(text:string):Promise<boolean> | 复制文字 | | setWindowTitle(title: string):void | 设置页面 title | | | | ## 4. date - createMonth(date?:Date | string | number = Date.now(),weekStart?: number = 1 ) 不传默认当前机器时间月份, weekStart: 1 默认周一开始 - 返回二维对象数组,以周为单位分割 ```javascript import { date } from 'utils94' const arr = date.createMonth() /* 返回 [ [ { "date": "2020-12-27T16:00:00.000Z", // Date 对象 "data": { // 数据 "day": "2020/12/28", // 当前日期 "week": 1, // 周几 "current": false // 是否为当前月数据 } } ... ], ... ] */ ``` - checkOverlap(add:{s:number, e:number}[]):boolean 检测时间是否重叠 ## 5. feature | 函数 | 功能 | | ------------------------------------------------------------ | -------------------------------------------- | | getVarType(var:any) : string | 获取变量类型 | | sliceArray(arr:any[], limit: number) : any[any[]] | 等分切割数组 | | filterUrlSearch(url:string, keys: string[]) : string | 过滤url search 中的字符串 | | resetObject(*obj*: any): any | 重置对象的值 | | getBase64Img(url: string): Promise<string> | 图片地址转base64 | | imageToBase64(img: HTMLElement): string | 图片标签转化base64 | | guid():string | guid生成 | | flatten(arr: any[]): any[] | 数组拍平 | | jsonParse(data: any): any | 数据格式化,将被转为string的数据 parse出来 | | toString(data: any) : string | 将数据stringfy | | fillZero(num: number \| string) :string | 前置补0 | | deepClone(origin: any) | 深度克隆 | | getValueByKey(row:any, key: string) | 通过key找值,支持数组下标 | | setValue(obj: { value: any; prop: string; parse: (*v*: any) => any; [*propName*: string]: any }[] \| { value: any; prop: string; parse: (*v*: any) => any; [*propName*: string]: any }, source:any ):void | 设置对象的值,直接修改obj的元数据 | | executeAsyncQueue(*tasks*: any[]): Promise<void> | 顺序执行队列中的任务,执行完成后tasks将被清空 | | sleep(ms:number =5000):Promise<void> | 睡眠函数,默认 5000ms | | polling(cb:()=>Promise<{status: LOOP_STATUS, result:any}>, timeConfig: number[] [],timeout?:number ) | 轮询函数,可配置间隔和间隔轮询次数 | ## 6. storage | 工具类 | 功能 | | -------------- | ----------------------------------------------- | | LocalStorage | window.localStorage 的 get, set, remove,clear | | SessionStorage | window.sessionStorage 的 get, set, remove,clear | | CookieStorage | js-cookie的 get,set, remove | ```javascript import { LocalStorage, SessionStorage, CookieStorage } from 'utils94/storage' LocalStorage.set('test', {a:1}) // test '{"a":1}' LocalStorage.get('test' ) // {a: 1} LocalStorage.remove('test') // void LocalStorage.clear() // void // 其他两个同上使用,只不过CookieStorage 支持传递配置项,且没有clear函数 ``` ## 7. platform | 函数 | 功能 | | ------------------- | -------------- | | isWxApp():boolean | 是否为微信环境 | | isIos():boolean | 是否为ios | | isAndroid():boolean | 是否为android | | isPc():boolean | 是否为pc | | isMobile():boolean | 是否为mobile | | isWindows():boolean | 是否为windows | | isMac():boolean | 是否为mac |