通用工具
Common (通用模块) 汇集了 TechUI 中那些无法被简单归类,但在业务开发中极高频使用的“瑞士军刀”型函数。
它涵盖了从设备环境嗅探、数据结构转换到视图过渡动画等一系列原子能力。
引入方式
javascript
import {
deviceInfo,
fullScreen,
flatToTree,
genUid,
viewTransStart,
colorPicker,
tConsole,
tTime
} from "@techui/utils";设备与屏幕
deviceInfo()
获取当前设备的详细硬件与环境信息。常用于响应式布局判断或移动端兼容处理。
- 返回:
Object - 源码逻辑: 基于 UserAgent 和屏幕尺寸 (
document.body.clientWidth) 进行计算断点。
javascript
const info = deviceInfo();
console.log(info);
/* 输出示例:
{
type: "pc-xl", // 屏幕断点: pc-xl, pc-lg, pc-md, pc-sm, pad, mobile
h: 1920, // 当前宽度
v: 1080, // 当前高度
touchable: false, // 是否支持触控
browser: "webkit", // 浏览器内核: webkit, Firefox, IE
orientation: "landscape", // 横竖屏状态
screenInvert: false // 屏幕是否反转
}
*/fullScreen
全屏控制对象,封装了浏览器原生的 requestFullscreen 和 exitFullscreen API。
- fullScreen.isEnabled(): 判断当前是否处于全屏状态。
- fullScreen.toggle(): 在全屏与非全屏之间切换。
- fullScreen.switch(boolean): 强制切换状态(
true进入全屏,false退出)。
javascript
// 按钮点击事件
const handleScreen = () => {
fullScreen.toggle();
};数据结构
flatToTree(flatData)
将扁平化的数据库结果集(包含 id, parentId)转换为树形结构(包含 children)。
- 特性: 自动根据
order字段排序,并清理空的children数组。 - 场景: 侧边栏菜单生成、组织架构树。
javascript
const list = [
{ id: 1, name: 'Root', parentId: null, order: 1 },
{ id: 2, name: 'Child', parentId: 1, order: 0 }
];
const tree = flatToTree(list);
// 结果: [{ id: 1, children: [{ id: 2, ... }] }]genUid(prefix, len) V0.0.5+
生成唯一标识符。
- prefix: ID 前缀字符串。
- len: 随机后缀的长度。
javascript
genUid('node', 6); // 输出: "node_xYz123"视觉与动画
viewTransStart(options)
基于 Chrome 原生 View Transitions API 的转场动画封装。
- 机制: 在动画执行期间,会自动给
html根元素添加tui-transitioning类名,便于 CSS 钩子控制。 - 降级: 若浏览器不支持该 API,会直接执行回调。
javascript
viewTransStart({
enable: true, // 是否开启转场
callback: () => {
// 在这里更新 DOM,例如切换路由或改变主题
updateMyDom();
},
complete: () => {
console.log('转场结束');
}
});colorPicker(options)
高级颜色拾取器。通常用于 ECharts 图表或数据可视化的动态配色生成。
- 依赖: 内部依赖
$c(Chroma.js 封装) 和$tCore。 - 参数:
palette: 基础色板数组。total: 生成颜色的总数。mode: 插值模式 (lch,hsl,lab等)。pickType: 拾取策略 (seq顺序,rdm随机)。
javascript
const colors = colorPicker({
palette: ['#ff0000', '#0000ff'], // 红到蓝
total: 10, // 生成10个渐变色
mode: 'lch'
});调试与格式化
tConsole
节流控制台。 用于防止同一条错误或警告信息在控制台中疯狂刷屏。
- tConsole.s(type, name, msg, thro): 发送信息。
type: 'log' | 'warn' | 'error' | 'info'name: 唯一标识 Key,相同 Key 的信息会被节流。thro: 是否开启节流(默认true)。
- tConsole.g(name): 获取已缓存的信息。
javascript
// 在循环中调用,只会打印一次
for(let i=0; i<100; i++){
tConsole.s('warn', 'myKey', '这是一条警告', true);
}tTime
简单的正则时间格式化工具。
- formatTime(str, fmt): 格式化
HH:mm。 - formatWeek(str, fmt): 格式化
YYYY-WW。
javascript
tTime.formatTime('14:05', 'HH时MM分'); // -> "14时05分"
tTime.formatWeek('2023-W01', 'YYYY年 第WW周'); // -> "2023年 第01周"