Complex-Utils
complex-utils 是一个功能强大且全面的 TypeScript/JavaScript 工具库,旨在为现代Web开发提供一组高效、可靠的辅助函数和类。
✨ 功能特性
- 类型安全: 使用 TypeScript 编写,提供强大的类型支持。
- 模块化: 所有功能均以独立的模块导出,支持摇树优化(Tree Shaking)。
- 功能丰富: 涵盖对象操作、异步控制、数字格式化、数据结构转换等多个方面。
- 环境兼容: 可同时在浏览器和 Node.js 环境下工作。
🚀 安装
npm install complex-utils
📚 API 文档 & 用法
Class (面向对象工具)
Life - 事件与生命周期管理器
一个强大的发布-订阅(Pub/Sub)系统,用于管理事件回调和生命周期。
import { Life } from 'complex-utils';
const life = new Life();
const id = life.on('data-loaded', (data) => {
console.log('Data has been loaded:', data);
});
life.trigger('data-loaded', { user: 'Alice' });
life.off('data-loaded', id);
Limit - 白名单/黑名单限制器
轻松实现功能的白名单或黑名单控制。
import { Limit } from 'complex-utils';
const blackList = new Limit({ list: ['admin'] });
console.log(blackList.getLimit('admin'));
console.log(blackList.getLimit('user'));
const whiteList = new Limit({ type: 'allow', list: ['user'] });
console.log(whiteList.getLimit('admin'));
console.log(whiteList.getLimit('user'));
Function (函数工具)
debounce - 函数防抖
在事件频繁触发时,确保函数只在最后一次触发后的指定时间内执行一次。
import { debounce } from 'complex-utils';
window.addEventListener(
'resize',
debounce(() => {
console.log('Window resized!');
}, 250)
);
throttle - 函数节流
确保函数在指定的时间间隔内最多只执行一次。
import { throttle } from 'complex-utils';
window.addEventListener(
'scroll',
throttle(() => {
console.log('User is scrolling!');
}, 100)
);
Object (对象和数组工具)
deepClone - 深拷贝
提供两种深拷贝模式,满足不同需求。
import { deepClone } from 'complex-utils';
const obj = { a: 1, b: { c: new Date() } };
const clonedObj1 = deepClone(obj);
const clonedObj2 = deepClone(obj, true);
formatTree - 列表转树形结构
高效地将包含 id 和 parentId 的扁平数组转换为嵌套的树形结构。
import { formatTree } from 'complex-utils';
const list = [
{ id: 1, name: 'Root', parentId: 0 },
{ id: 2, name: 'Child A', parentId: 1 },
{ id: 3, name: 'Child B', parentId: 1 },
];
const tree = formatTree(list).parse();
getComplexProp - 安全地获取深层属性
通过点分隔的字符串路径安全地访问对象的深层属性。
import { getComplexProp } from 'complex-utils';
const user = {
name: 'Alice',
address: {
city: 'Wonderland',
zip: 12345
}
};
const city = getComplexProp(user, 'address.city');
const street = getComplexProp(user, 'address.street');
... 以及更多强大的工具函数等待您的探索!
🧪 单元测试
项目使用 Vitest 进行单元测试,以确保代码的质量和可靠性。
-
运行测试:
npm test
-
生成测试覆盖率报告:
npm run coverage