app-javascript
app-javascript是一个轻量级,零依赖工具库,支持服务端和客户端,更多是定制化,供自己使用的,对于treeshake可以很好支持。
安装
npm安装(推荐,可定制化)
npm i @guanwei/app-javascript
link标签
通用写法:
<script href="//unpkg.com/@guanwei/app-javascript"></script>
<script>
console.log(AppUtils.isClient)
</script>
或者使用 es6 module
<script module>
import { isClient } from 'https://unpkg.com/@guanwei/app-javascript?module'
console.log(isCilent)
</script>
Api
| Name | File | Description | Params | Return |
|---|---|---|---|---|
| bindFn | bindFn.ts | 绑定函数上下文 | (fn: Function, ctx: unknown) |
any |
| add | calc.ts | 加 | (n1: number, n2: number) |
number |
| sub | calc.ts | 减 | (n1: number, n2: number) |
number |
| mul | calc.ts | 乘 | (n1: number, n2: number) |
number |
| div | calc.ts | 除 | (n1: number, n2: number) |
number |
| hasClass | className.ts | 是否含有指定类名 | (element: HTMLElement, cls: string) |
boolean |
| addClass | className.ts | 添加指定类名 | (element: HTMLElement, cls: string) |
- |
| removeClass | className.ts | 移除指定类名 | (element: HTMLElement, cls: string) |
- |
| copy | copy.ts | 简易版深拷贝 | <T = unknown>(source: T, silence?: boolean) |
T |
| def | def.ts | 定义对象属性 | (obj: object, key: string | symbol, value: any) |
- |
| isClient | env.ts | 常量:判别是否为客户端 | - | - |
| isFirefox | env.ts | 常量:是否是火狐浏览器 | - | - |
| isAndroid | env.ts | 常量:是否是安卓系统 | - | - |
| isOS | env.ts | 常量:是否是苹果系统 | - | - |
| isWindowsPhone | env.ts | 常量:是否是Win手机系统 | - | - |
| isSymbianos | env.ts | 常量:是否是塞班系统 | - | - |
| isMobile | env.ts | 常量:是否是手机 | - | - |
| getURLParam | getURLParam.ts | 获取链接参数 | (name: string, search?: string) |
string | null |
| looseEqual | looseEqual.ts | 比较两个值是否相等(代码取自 @vue/shared) | (a: any, b: any) |
boolean |
| looseIndexOf | looseEqual.ts | 找到数组中指定元素的下标 | (arr: any[], val: any) |
number |
| noop | noop.ts | 空函数,用于赋值 | - | - |
| getPathProp | pathProp.ts | 获取指定对象路径属性值 | (target: Record<any, any>, path: string | Array<string>) |
any |
| setPathProp | pathProp.ts | 设置指定对象路径属性值 | (target: Record<any, any>, path: string | Array<string>, value: any) |
boolean |
| getStorage | storage.ts | 获取指定范围的本地储存 | (name: string, content: any) |
- |
| setStorage | storage.ts | 设置指定范围的本地储存 | (name: string) |
string | null | undefined |
| removeStorage | storage.ts | 移除指定范围的本地储存 | (name: string) |
- |
| styleInject | styleInject.ts | 在head标签注入一段样式文本 |
(css: any, options?: Options) |
- |
| toDateString | toDateString.ts | 格式化部分时间格式 | (time?: string | Date, format?: string) |
string |
| toNumber | toNumber.ts | 将输入值格式化为数字 | (val: any) |
any |
| trim | trim.ts | 将前后空白移除 | (string: string) |
string |
| uuid | uuid.ts | 生成一个uuid | - | string |
| hasOwn | type.ts | 当前值是否含有制定属性 | (val: object, key: string | symbol) |
boolean |
| toRawType | type.ts | 当前值表现的类型名称 | (val: unknown) |
string |
| isString | type.ts | 是否是字符串 | (val: unknown) |
boolean |
| isNumber | type.ts | 是否是数字 | (val: unknown) |
boolean |
| isBoolean | type.ts | 是否是布尔 | (val: unknown) |
boolean |
| isBooleanish | type.ts | 是否是布尔或者字符串'true','false' |
(val: any) |
boolean |
| isSymbol | type.ts | 是否是Symbol值 |
(val: unknown) |
boolean |
| isRegExp | type.ts | 是否是正则 | (val: unknown) |
boolean |
| isNil | type.ts | 是否是null或者undefined |
(val: unknown) |
boolean |
| isNumeric | type.ts | 是否可转成数字化 | (val: unknown) |
boolean |
| isDef | type.ts | 是否定义了存在值,与函数isNil的结果相反 |
<T = any>(val?: T) |
boolean |
| isDate | type.ts | 是否是日期 | (val: unknown) |
boolean |
| isFunction | type.ts | 是否是函数 | (val: unknown) |
boolean |
| isArray | type.ts | 是否是数组 | (val: any) |
boolean |
| isObject | type.ts | 是否是对象 | (val: unknown) |
boolean |
| isPromise | type.ts | 是否是Promise |
(val: unknown) |
boolean |
| isPlainObject | type.ts | 是否是纯对象,即指向Object |
(val: unknown) |
boolean |
| isEmptyObject | type.ts | 是否是空对象 | (val: any) |
boolean |
| validateURL | validate.ts | 验证链接地址 | (val: string) |
boolean |
| validateEmail | validate.ts | 验证邮箱 | (val: string) |
boolean |
| validateLetter | validate.ts | 验证字母 | (val: string) |
boolean |
| validateMobileNumber | validate.ts | 验证手机号 | (val: string) |
boolean |
对比 1.0.0
新增
isClient(2022/01/16):用于判断是客户端还是服务端新增
hasOwn:用于判别对象是否含有此属性新增
toRawType:用于判别入参构造名称新增
isBooleanish:用于判别 boolean 值和'true', 'false'新增
isSymbol:用于判别 symbol 类型新增
isRegExp:用于判别是否为正则表达式新增
isNumeric:用于判别数字且那些可能是数字的字符串,如 '1', '2' 等新增
isDef:用于判别是否已经定义,它是isNil的非新增
isDate:用于判别是否是日期类型新增
looseIndexOf:Array.findIndex的封装新增
addClass/removeClass/hasClass:对于HTMLElement的类名操作新增
def:用于定义对象属性更新
arrayEquals:之前仅仅比较数组,现在使用@vue/shared包内的方法looseEqual,更加强大的对比功能,所以借鉴过来更新
toNumber:之前直接将非数字变空白,过于暴力和不合理,此次重构,使之更合理化
更名
bind=>bindFn更名
getStore=>getStorage,setStore=>setStorage,removeStore=>removeStorage更名
isNull=>isNil更名
getKeyValue=>getPathProp,setKeyValue=>setPathProp移除
manba:第三包,依旧推荐可用,只是不在集成了移除
throttle/debounce:函数写的依旧不淳熟,推荐第三包如:lodash.throttle,lodash.debounce移除
getCookie/setCookie/removeCookie:集成js-cookie,可根据项目再次调整移除
generateId/freeze/trimAll/padLeft/toCN/toInt/cut/escape:使用度偏小移除
beginWith/endWidth(名称拼写错误:已经有可替代函数,如String.prototype.startsWith/String.prototype.endsWith移除暂时
extend,请使用Object.assign或者第三方库作为替代