project-general-tools
Version:
项目开发通用工具类封装
441 lines (328 loc) • 9.98 kB
Markdown
# customer-display-platform
> 文档编写: Mad Dragon <395548460@qq.com> 2020年4月14日
# tools 工具类
`project-general-tools` 是一款适用于 vue 项目的 通用工具类,包含 log、moment、cookie、Api、localStorage、sessionStorage ... ,以及 一些常用的函数。
### Api 工具类 (Axios 封装)
Function
```js
tools.Api.get(url,params).then((res)=>{}).catch(error);
tools.Api.post(url,params).then((res)=>{}).catch(error);
tools.Api.jsonp(url,params).then((res)=>{}).catch(error);
tools.Api.delete(url,params).then((res)=>{}).catch(error);
tools.Api.head(url,params).then((res)=>{}).catch(error);
tools.Api.options(url,params).then((res)=>{}).catch(error);
tools.Api.put(url,params).then((res)=>{}).catch(error);
tools.Api.patch(url,params).then((res)=>{}).catch(error);
```
代码示例:
```js
import tools from 'project-general-tools';
const getStat = async () => {
try {
const data = await tools.Api.get('http://api.bilibili.com/archive_stat/stat', {
aid:90822505,
type:'json'
});
tools.log.info('getStat', data)
} catch (e) {
tools.log.error('getStat', e)
}
};
```
### 时间格式化工具 (MomentJs)
Function
```
// 初始时间
tools.formatInitTime(time = new Date(), norms = 'YYYY-MM-DD')
// 时间 加法
tools.formatAddTime(addNum = 1, addNorms = 'days', time = new Date(), norms = 'YYYY-MM-DD')
// 时间 减法
tools.formatSubtractTime(addNum = 1, addNorms = 'days', time = new Date(), norms = 'YYYY-MM-DD')
// 搜索专用 开始时间
tools.formatStartTime(time = new Date(), norms = 'YYYY-MM-DD')
// 搜索专用 结束时间
tools.formatEndTime(time = new Date(), norms = 'YYYY-MM-DD', addNum = 1, addNorms = 'days')
// 获得时间差
// 时间格式为 年-月-日 小时:分钟:秒 或者 年/月/日 小时:分钟:秒
// 其中,年月日为全格式,例如 : 2010-10-12 01:00:00
// 返回精度为:秒,分,小时,天
tools.getDateDiff: (startTime, endTime, diffType = 'dhm')
```
代码示例:
```js
import tools from 'project-general-tools';
console.log(tools.formatInitTime());
console.log(tools.formatAddTime(2, 'days'));
```
### log 日志工具类 (console)
Function
```js
tools.log.info(title, ...args)
tools.log.error(title, ...args)
tools.log.debug(title, ...args)
tools.log.warn(title, ...args)
tools.log.table(title, ...args)
// 将日志 存入 localStorage
tools.log.setLog(type,title, ...args)
```
代码示例:
```js
import tools from 'project-general-tools';
// log test
tools.log.info('测试时间打印', tools.formatInitTime());
tools.log.setLog('error','测试',{key:'vlaue'})
```
### cookie
Function
```js
// 设置cookie
tools.cookie.setCookie(name, value, hours, path)
// 获取cookie值
tools.cookie.getCookieValue(name)
// 删除cookie
tools.cookie.deleteCookie(name, path)
```
代码示例:
```js
import tools from 'project-general-tools';
tools.log.info('获取用户ID',tools.cookie.getCookieValue('userId'))
```
### lStorage 缓存(localStorage)
Function
```js
// 存储localStorage
tools.lStorage.setItem(key, content)
// 获取localStorage
tools.lStorage.getItem(key)
// 删除localStorage
tools.lStorage.removeItem(key)
// 从localStorage删除所有保存的数据
tools.lStorage.clear()
// 获取所有的 缓存数据
tools.lStorage.getAll()
// 删除指定 key匹配的数据
tools.lStorage.removeDataFromKey(key)
```
代码示例:
```js
import tools from 'project-general-tools';
tools.log.info('获取所有的 缓存数据',tools.lStorage.getAll())
// 删除指定 key匹配的数据
tools.lStorage.removeDataFromKey('xxb_')
```
### sStorage 缓存(sessionStorage)
Function
```js
// 存储sessionStorage
tools.sStorage.setItem(key, content)
// 获取sessionStorage
tools.sStorage.getItem(key)
// 删除sessionStorage
tools.sStorage.removeItem(key)
// 从sessionStorage删除所有保存的数据
tools.sStorage.clear()
```
代码示例:
```js
import tools from 'project-general-tools';
tools.log.info('获取sessionStorage',tools.sStorage.getItem('xxxb_user'))
```
### fStorage 缓存(localForage)
> 改进的离线存储
Function
```js
import localforage from 'localforage';
// 创建并返回一个实例
const fStorage = localforage.createInstance({
name:'test'
});
// getItem 从仓库中获取 key 对应的值并将结果提供给回调函数。如果 key 不存在,getItem() 将返回 null。
fStorage.getItem('somekey').then(function(value) {
// 当离线仓库中的值被载入时,此处代码运行
console.log(value);
}).catch(function(err) {
// 当出错时,此处代码运行
console.log(err);
});
// setItem 将数据保存到离线仓库。你可以存储如下类型的 JavaScript 对象:
/*
Array
ArrayBuffer
Blob
Float32Array
Float64Array
Int8Array
Int16Array
Int32Array
Number
Object
Uint8Array
Uint8ClampedArray
Uint16Array
Uint32Array
String
*/
fStorage.setItem('somekey', 'some value').then(function (value) {
// 当值被存储后,可执行其他操作
console.log(value);
}).catch(function(err) {
// 当出错时,此处代码运行
console.log(err);
});
// removeItem 从离线仓库中删除 key 对应的值。
fStorage.removeItem('somekey').then(function() {
// 当值被移除后,此处代码运行
console.log('Key is cleared!');
}).catch(function(err) {
// 当出错时,此处代码运行
console.log(err);
});
// clear 从数据库中删除所有的 key,重置数据库。
fStorage.clear().then(function() {
// 当数据库被全部删除后,此处代码运行
console.log('Database is now empty.');
}).catch(function(err) {
// 当出错时,此处代码运行
console.log(err);
});
// length 获取离线仓库中的 key 的数量(即数据仓库的“长度”)。
fStorage.length().then(function(numberOfKeys) {
// 输出数据库的大小
console.log(numberOfKeys);
}).catch(function(err) {
// 当出错时,此处代码运行
console.log(err);
});
// key 根据 key 的索引获取其名
fStorage.key(2).then(function(keyName) {
// key 名
console.log(keyName);
}).catch(function(err) {
// 当出错时,此处代码运行
console.log(err);
});
// keys 获取数据仓库中所有的 key。
fStorage.keys().then(function(keys) {
// 包含所有 key 名的数组
console.log(keys);
}).catch(function(err) {
// 当出错时,此处代码运行
console.log(err);
});
// iterate 迭代数据仓库中的所有 value/key 键值对。
// 同样的代码,但使用 ES6 Promises
fStorage.iterate(function(value, key, iterationNumber) {
// 此回调函数将对所有 key/value 键值对运行
console.log([key, value]);
}).then(function() {
console.log('Iteration has completed');
}).catch(function(err) {
// 当出错时,此处代码运行
console.log(err);
});
// 提前退出迭代:
fStorage.iterate(function(value, key, iterationNumber) {
if (iterationNumber < 3) {
console.log([key, value]);
} else {
return [key, value];
}
}).then(function(result) {
console.log('Iteration has completed, last iterated pair:');
console.log(result);
}).catch(function(err) {
// 当出错时,此处代码运行
console.log(err);
});
// config storeName:数据仓库的名称 version:数据库的版本 description:数据库的描述
fStorage.config({
storeName:'test',
version:1,
description:'test fStorage',
});
```
代码示例:
```js
import tools from 'project-general-tools';
tools.log.info('获取sessionStorage',tools.sStorage.getItem('xxxb_user'))
```
### 常用函数
#### getUUID
```js
tools.getUUID(len, radix)
```
#### getResult 数组里取指定 key 的value 值
```js
tools.getResult(arr = [], id = '', find = 'id', result = 'value')
```
#### formatPhoneNumber 格式化手机号 隐藏中间数据
```js
tools.formatPhoneNumber(phone)
```
#### numberToPercentage 数字转换成 百分比
```js
tools.numberToPercentage(phone)
```
#### on 绑定事件 on(element, event, handler)
```js
tools.on()
```
#### off 解绑事件 off(element, event, handler)
```js
tools.off()
```
#### CDN 图片cdn
须在`.env` 文件配置 VUE_APP_CDN
```js
tools.CDN()
```
#### url url处理
```js
tools.url.build(url, param)
tools.url.getParam(name)
tools.url.getParamKeys()
tools.url.getParamVals()
tools.url.getParamMap()
tools.url.paramStringToMap(str)
tools.url.mapToParamString(m)
```
#### object object处理
```js
tools.object.isObject(obj)
tools.object.isFunction(obj)
tools.object.isArray(obj)
tools.object.isNull(obj)
tools.object.isNotNull(obj)
tools.object.length(obj)
tools.object.getChildrenPath(obj, c, k)
tools.object.merge(t, s, mergeArray = false)
tools.object.isObject(obj)
```
#### string string处理
```js
tools.string.trim(str)
tools.string.isBlank(str)
tools.string.isNotBlank(str)
tools.string.isEmpty(str)
tools.string.isNotEmpty(str)
tools.string.equalsIgnoreCase(a,b)
```
#### list list处理
```js
tools.list.isEmpty(l)
tools.list.isNotEmpty(l)
tools.list.stringToList(s)
tools.list.find(l, k, v, j)
tools.list.indexOf(l, k, v, b, j)
```
#### map map处理
```js
tools.map.mapsExtVal(maps,key)
tools.map.listToMap(list,key)
tools.map.isEqualForString(a,b)
tools.map.isEmpty(m)
tools.map.isNotEmpty(m)
tools.map.isEqual(a, b, isWeak, isString)
tools.map.keys(m)
tools.map.vals(m)
```