格式化工具
B 端高频格式化函数,与组件零耦合,可独立引入:
js
import { formatNumber, formatFileSize } from '@wil-works/evoke-business-ui'formatNumber — 数字千分位
formatNumber(1234567.891, { precision: 2 }) → 1,234,567.89
formatNumber(1000, { separator: '' }) → 1000
formatNumber(98765, { separator: '.' }) → 98.765
formatNumber('abc') → 'abc'(非数字原样返回)
formatFileSize — 文件大小
formatFileSize(0) → '0 B'
formatFileSize(512) → '512 B'
formatFileSize(1536) → '1.5 KB'(附件列表显示)
formatFileSize(1073741824) → '1.0 GB'(即 1GB)
formatDate — 日期模板
模板令牌:YYYY MM DD HH mm ss SSS:
formatDate(now, 'YYYY-MM-DD') → '2026-10-11'
formatDate(now, 'HH:mm:ss') → '06:58:39'(日志时间戳)
formatDate(now, 'MM月DD日 HH:mm') → '10月11日 06:58'
formatDate('not-a-date') → ''(非法输入返回空串)
formatRelativeTime — 相对时间
消息流、操作日志、评论区的标准展示:
30 秒内 → '刚刚'
3 分钟前 → '3 分钟前'
5 小时前 → '5 小时前'
昨天 → '昨天 14:30'(形如)
往年 → '2025-01-05'(形如)
formatDuration / formatPercent
formatDuration(205) → '03:25'(音视频播放器)
formatDuration(3723) → '01:02:03'(超 1 小时自动进位)
formatPercent(0.1234) → '12.34%'(进度/占比)
formatPercent(0.06, { precision: 0 }) → '6%'
API
ts
formatNumber(value: number, options?: {
precision?: number // 小数位
separator?: string // 千分位符号,默认 ',';传 '' 关闭
decimalSeparator?: string // 小数点符号,默认 '.'
}): string
formatFileSize(bytes: number, options?: {
precision?: number // 默认 1
base?: 1024 | 1000 // 默认 1024
}): string // 非法输入返回 ''
formatDate(date: Date | number | string, pattern?: string): string
formatRelativeTime(date: Date | number | string, now?: Date | number): string
formatDuration(seconds: number, options?: { forceHours?: boolean }): string
formatPercent(ratio: number, options?: { precision?: number }): string所有函数对非法输入不抛错:数字类返回 String(value) 或 '',日期类返回 '',可直接用于模板插值。