项目开发中通用到的工具类
npm install @flyer/commonality || yarn add @flyer/commonality
- 订阅广播
subscribe:(channel: string, commit: Function):void
- 广播消息
publish: (channel:string,data:Object):void
- 取消订阅广播
unsubscribe: (channel: string):boolean
import {broadcaster} from '@flyer-ui/commonality'
const broadcaster = Broadcaster()
broadcaster.subscribe('114',(data)=>{
log('收到广播回来的数据114-1',data)
})
broadcaster.subscribe('114',(data)=>{
log('收到广播回来的数据114-2',data)
})
broadcaster.publish('114','data')
broadcaster.unsubscribe('114')
- warn 参数name:标记名称,msg:提示信息
- log 参数name:标记名称,msg:提示信息
- error 参数name:标记名称,msg:提示信息
- config 配置信息:moduleName:提示中模块的名称,默认为flyer-ui
import {warn,log,error,config} from '@flyer-ui/commonality'
config.moduleName='module'
warn('name','msg',{other:'other'}) //[date][module.name] msg {other:'other'}
warn('name','msg') //[date][module.name] msg
warn('msg') //[date][module] msg
log('name','msg','other') //[date][module.name] msg other
log('name','msg') //[date][module.name] msg
log('msg') //[date][module] msg
error('name','msg',new Error('发生了未知错误')) //[date][module.name] msg ErrorInfo
error('name','msg') //[date][module.name] msg
error('msg') //[date][module] msg
方法名称 | 说明 | 参数 | 返回值 |
---|---|---|---|
preciseAddition | 数值精确添加的方法 | num1:number, num2:number | number |
preciseReduce | 数值精确减数的方法 | num1:number, num2:number | number |
import {preciseAddition,preciseReduce} from '@flyer-ui/commonality'
preciseAddition(0.1+0.2) // 0.3
preciseAddition(0.7,0.1) // 0.8
preciseReduce(1.5,1.2) // 0.3
preciseReduce(0.3,0.2) // 0.1
-
格式化字占位符,例如:”{1},{2}“
format(...rest: Array<any>): string | undefined
-
将数字进行货币格式化
formatCurrency(value: string | number, unit: string = '¥'):string
-
可以生成并返回一个随机数的函数
randomNumber():number
-
判断是否是 string 对象
isString(obj: any): Boolean
-
深拷贝对象
deepClone(target:any):object
>0.1.3有效 -
确保只执行一次函数
function once(fn: Function): Function
-
混合对象里的属性到指定的对象上
extend(to: object, _from: object): object
-
检测对象里是否包含有指定属性
hasOwn(obj: object, key: string | number | symbol): boolean
-
判断对象是否是纯粹的对象类型
isPlainObject(obj: object): boolean
-
执行一个空操作
noop(...rest: [any]): void
import {
isPlainObject,
hasOwn,
extend,
deepClone,
once,
~~debounce,~~
isString,
format,
formatCurrency
} from '@flyer-ui/commonality'
// 或者直接引用全部
// import common from '@flyer-ui/commonality'
// common.format()
isPlainObject([]) // false
hasOwn({a:1},'a') // true
extend({a:1},{b:2}) // {a:1,b:2}
const result = {}
deepClone(result,{
b:2,
c:{
c1:'2.1',
c2:'2.2'
},
a:1,
e:[1,2,3,4]
}) // {"b":2,"c":{"c1":"2.1","c2":"2.2"},"a":1,"e":[1,2,3,4]}
let counter = 0
const fn = once((a:number,b:number)=>{
log('我只执行了一次。')
counter += (a + b)
})
fn(1,2) // 3
fn(1,2) // 3
const arry = [1,2,3,4]
arry.forEach(()=>{fn(1,2)}) //[23:11:44][Flyer-UI] debounce 我只执行了一次。0
isString({}) // false
format('{1},{2}','a','b') //a,b
formatCurrency(123456789.5) // ¥ 123,456,789.50
type TDate = {
years: string | number
months: string | number
days: string | number
hours: string | number
minutes: string | number
seconds: string | number
}
- 格式化日期,format是格式化的格式,date是要格式化的日期
formatDate(
format: string,
data: Date | string | number | TDate
):Date | string | number | TDate
- 根据参数返回年月日时分秒对象,为空则返回当前时间
getDate(param: string | number | Date): TDate
- 格式化日期,format是格式化的格式,date是要格式化的日期
formatDate(
format: string,
data: Date | string | number | TDate
):Date | string | number | TDate
- 填充时间,判断时间是否是十位数,不是则前位补0
fullTime(time: string | number): string
- 获取两个时是的间隔,返回年月日时分秒
getDiffTime(start?: string | Date, end?: string | Date,diffTime:number = 0): TDate
- 获取时间差并指定显示的位数,参数num值设置了后,template模块字符串要从年到秒填全。
getDiffTimeDescription(
start?: string | Date,
end?: string | Date,
diffTime:number = 0,
num?: number,
template?: string
): string | undefined
import {
fullTime,
getDate,
formatDate,
TDate,
getDiffTime,
getDiffTimeDescription
} from '@flyer-ui/commonality'
fullTime(0) // 00
getDate('2020-07-10') // {years: 2020,months: 7,days: 10,hours: 8,minutes: 0,seconds: 0}
formatDate('yyyy-MM-dd','2020-08-02') // 2020-08-02
getDiffTime('1986-07-03 15:03:23','2020-08-03 18:02:01')
// { years: 34, months: 1, days: 1, hours: 3, minutes: 58, seconds: 38 }
getDiffTimeDescription('1986-07-03 15:03:23','2020-08-03 18:02:01')
//34年1个月1日3小时58分38秒
- 可动态加载JS/CSS的加载器
function loader(paths: string | Array<string>, callback: Function):void
loader('https://unpkg.com/flyer-ui/lib/index.js',()=>{
log('动态加载成功。。。')
})