foundation-utils
工作中使用到的 util 方法
number
-
NumAdd(a, b) // 加法
示例:NumAdd(1, 2); // 3
-
NumSub(a, b) // 减法
示例:NumSub(3, 2); // 1
-
NumMul(a, b) // 乘法
示例:NumMul(1, 2); // 2
-
NumDiv(a, b) // 除法
示例:NumDiv(2, 1); // 2
-
Thousands(num: number | string) // 千分位格式化
示例:Thousands(123456); // 123,456
-
ThousandsFloat(num: number | string, decimal: number) // 千分位格式化 带小数
示例:ThousandsFloat(123456789, 2); // 123,456,789.00 ThousandsFloat(123456789.12345, 2); // 123,456,789.12
-
MoneyUnitSwitch(num: number, baseUnit: number, NaNText:string)
示例:MoneyUnitSwitch(123456789.12, 10000); // 12,345.68 MoneyUnitSwitch(123456789.12, 100); // 1,234,567.89
-
FormatFloat(num: number, decimal?: number) //格式化数据,保留指定位数小数
示例:FormatFloat(0.12345, 3); // 0.123
-
FilterNumber(value: string)
示例:FilterNumber('abc123ccdd456啊789'); // 123456789
-
NumberToCapital(num: string | number) //金额转换为大写
示例:NumberToCapital(1234); // 壹仟贰佰叁拾肆圆整 NumberToCapital(123.45); // 壹佰贰拾叁圆肆角伍分
-
NumberScientificNotation(num_str: string) //科学计数法
示例:NumberScientificNotation("123E4"); // 1230000 NumberScientificNotation(12E3); // 12000
string
-
Capitalize(str: string) // 首字母大写
示例:Capitalize("false"); // False
-
ToPercent(point: string) // 小数转化为百分数
示例:ToPercent("1.2345"); // 123.45%
object
-
IsNonEmpty(value: string) //非空校验
-
IsNonZero(value: string) //非0校验
-
DeleteObjKeys(obj: Object, key: string | string[]) //删除 obj 中指定的元素
示例:DeleteObjKeys({a:1, b:2, c:3, d:4}, ['a','b']); // {c:3, d:4} DeleteObjKeys({a:1, b:2, c:3, d:4}, 'a'); // {b:2, c:3, d:4}
-
RepeatObj(arr: any[], arg: string) //数组对象去重
示例:let arr = [{ key: 1 }, { key: 1 }, { key: 2 }, { key: 3 }, { key: 3 }, { key: 4 }]; RepeatObj(arr, 'key'); // [{ key: 1 }, { key: 2 }, { key: 3 }, { key: 4 }]
charType
-
GetType(value: any) // 获取对象数据类型
示例:GetType("false"); // string
-
IsType(type: string)(value: any) // 是什么数据类型
示例:IsType("String")("value"); // true
-
IsArray(value: any) // 是数组
示例:IsArray("false"); // false
-
IsNumber(value: any) // 是number
示例:IsNumber("false"); // false
-
IsObject(value: any) // 是对象
示例:IsObject("false"); // false
-
IsFun(value: any) // 是函数
示例:IsFun("false"); // false
-
IsString(value: any) // 是字符串
示例:IsString("false"); // true
-
IsBoolean(value: any) // 是布尔
示例:IsBoolean("false"); // false
date
-
Date_YMD_HMS(nS?: Number | string, reg?: string) //年月日 时分秒
示例:Date_YMD_HMS(date, '-'); // 2023-01-01 00:00:00
-
Date_YMD(nS?: Number | string, reg?: string) //年月日
示例:Date_YMD(date, '-'); // 2023-01-01
-
Date_HMS(nS?: Number | string) //时分秒
示例:Date_HMS(date, '-'); // 00:00:00
-
Date_timestamp(timestamp?: number | string) //时间戳转换为 xx天xx小时xx分钟xx秒
示例:Date_timestamp(new Date().getTime()) ; // 2天18小时02分20秒
-
Date_nextDate(date?: string, nextDay?: number, reg?: string) //指定日期后的几天
示例:Date_nextDate('2023-01-01', 2, '-'); // 2023-01-03
file download
-
FileDownload(fileUrl: string, fileName?: string) //文件下载 - a 标签方式
-
IframeDownload(fileUrl: string) //文件下载 - iframe 方式
-
BlobFileDownload(fileUrl: string, fileName?: string) //文件下载 - blob 方式
-
BlobDownloadByFileUrl(fileUrl: string, fileName?: string) //文件下载 - blob 方式 (pdf、mp4 文件流下载)
-
BlobDownloadByBlob(blob: Blob, fileName?: string) //blob 文件下载
-
GetFileSuffix(fileUrl: string) //获取文件后缀名
示例:let fileUrl = "https://img0.baidu.com/it/textName.txt"; GetFileSuffix(fileUrl); // "textName.txt"
-
GetFileNameSuffix(fileUrl: string) //获取文件名后缀名
示例:let fileUrl = "https://img0.baidu.com/it/textName.txt"; GetFileNameSuffix(fileUrl); // "txt"
-
GetFileNameText(fileUrl: string) //获取文件名
示例:let fileUrl = "https://img0.baidu.com/it/textName.txt"; GetFileNameText(fileUrl); // "textName"
-
GetFileType(fileName: string) //文件类型
localStorage
-
SetLocalStorage(key: string, value: any) //存储localStorage
-
GetLocalStorage(key: string) //获取localStorage
-
RemoveLocalStorage(key: string) //删除localStorage
-
RemoveLocalStorageAll() //删除所有localStorage
loadScript
-
LoadScript(url: string, callback: Function) //动态加载一个远程脚本
-
LoadScriptQueue(urls: string[], cb: Function) //顺序加载一组远程脚本
url
-
ObjToUrlParam(obj: Object) //对象转换url参数 遇到属性值为空或0就不拼接
-
AddUrlParamFromObj(url: string, obj: Object) //给url添加参数 通过对象
-
AnalyzingUrl(url: string) //解析地址参数
-
EncodeURIComponent(url: string) //编码
-
DecodeURIComponent(url: string) //解码
-
IsDev // 是否是本都环境,根据地址来判断
-
IsTest(domain: string) // 是否是生产环境,根据地址来判断
-
IsProd(domain: string) // 是否是测试环境,根据地址来判断
randomCode
-
CreateGuid() //Guid
示例:CreateGuid(); // "a1ca0f7b-51bd-4bf3-a5d5-6a74f6adc1c7"
-
CreateRandomCode(num: number) //随机验证码
示例:CreateRandomCode(6); // "a1ca0f"
copy
-
DisabledCopy() //禁用复制
-
LaunchCopy() //关闭禁用复制
-
CopyContent(value:string) //复制字符串文档至剪贴板
示例:CopyContent('这里是需要复制的内容')
other
-
Debounce(func: Function, delay: number) //防抖函数
-
Throttle(func: Function, wait: number) //节流函数
-
StrIpScript(value: string) //限制输入逗号
-
AuthorityComparison() //权限对比
-
AddIframeDom(url) //添加iframe到文档中
-
PrintImage(url) //打印图片
-
FilterTreeNode(tree, childKey, filterKey, value) //树数据过滤
Validator 数据校验
示例:
import Validator from "foundation-utils"
function requiredVerify(item): String | null {
let validator = new Validator();
validator.add(item.name, [
{ strategy: "isNonEmpty", errorMsg: "请输入用户名" },
{ strategy: "minLength", len: 6, errorMsg: "用户名长度不能小于6位" },
{ strategy: "maxLength", len: 10, errorMsg: "用户名长度不能大于10位" },
]);
validator.add(item.phone, [
{ strategy: "isNonEmpty", errorMsg: "请输入电话号码" },
{
strategy: 'isCustomReg',
regExp: new RegExp(/^1(3\d|4[5-9]|5[0-35-9]|6[2567]|7[0-8]|8\d|9[0-35-9])\d{8}$/),
errorMsg: "请输入11位有效电话号码"
}
]);
validator.add(item.code, [
{
strategy: "isCustomFun",
fun: (value) => {
let reg = /(^[a-za-z0-9]+$)/;
return !reg.test(value);
},
errorMsg: "请输入数组、字母组合的code"
},
]);
let errorMsg = validator.start();
return errorMsg;
}
nc 观察者模式
示例:observer.ts文件
import { NotificationCenter, Event } from "foundation-utils";
import type { Class } from "foundation-utils";
let nc_ = new NotificationCenter();
// 事件名称
export class changeEvent extends Event { }
// 事件注册
export function registerObServerEvent(that: object | symbol, eventName: Class<Event>, callback: Function) {
nc_.register(that, eventName, async (event: Event) => {
callback(event);
});
}
// 事件销毁
export function unRegisterObServerEvent(that: object | symbol, eventName: Class<Event>) {
nc_.unRegister(that, eventName);
}
// 销毁所有事件
export function unregisterAllObServerEvent(that: object | symbol) {
nc_.unRegisterAll(that);
}
// 发送事件
export function postObServerEvent(event: Event) {
nc_.post(event);
}
使用:index.vue文件
postObServerEvent(new LetterStatusChangeEvent()); // 广播事件
registerObServerEvent(proxy!.$el, LetterStatusChangeEvent, () => { loadData(); }); // 接收事件
unRegisterObServerEvent(proxy!.$el, LetterStatusChangeEvent); // 销毁事件
httpService 异步请求
客户端使用示例:
import { httpService } from "foundation-utils";
async function loadData(){
const url = "http://localhost:8066/user/get";
let ret = await httpService().get(url);
console.log(ret.data)
}