t-comm
Version:
专业、稳定、纯粹的工具库
304 lines (217 loc) • 9.38 kB
Markdown
# t-comm
<!-- 复制到 docs 时,去掉 ”详细文档“ 那一节 -->
<div align="center">
<img src="https://mike-1255355338.cos.ap-guangzhou.myqcloud.com/press%2Fimg%2Fown_mike_5489135b5a3b9258d8.gif" width="120" style="margin-bottom: 20px;margin-top: 20px;" />
</div>
<p align="center">
<img src="https://img.shields.io/npm/v/t-comm">
<img src="https://img.shields.io/npm/l/t-comm">
<img src="https://img.shields.io/npm/dw/t-comm">
<img src="https://img.shields.io/npm/unpacked-size/t-comm">
<br/>
<img src="https://img.shields.io/badge/modules-100%2B-blue">
<img src="https://img.shields.io/badge/TypeScript-strict-blue?logo=typescript&logoColor=white">
<img src="https://img.shields.io/badge/build-passing-brightgreen">
<img src="https://img.shields.io/badge/coverage-88.44%25-green" alt="coverage">
<img src="https://img.shields.io/badge/created-2022--01-blue?logo=github&logoColor=white">
</p>
## 项目介绍
`t-comm` 是一个专业、稳定、纯粹的现代化前端工具库,专为提升开发效率和代码质量而设计。它整合了 100+ 个实用模块,涵盖了从基础数据处理到复杂业务场景的全方位工具链。
### 核心价值
- **全面覆盖**:提供从基础工具函数到复杂业务场景的完整解决方案
- **类型安全**:完全基于 TypeScript 开发,提供完整的类型定义和智能提示
- **按需引入**:支持 tree-shaking,大幅减少打包体积
- **跨平台适配**:统一封装 Web、小程序、uni-app 等多平台 API
- **生产级稳定**:经过大量项目验证,确保高可靠性
- **持续维护**:活跃的社区贡献和定期的功能更新
### 应用场景
- **Web 应用开发**:提供丰富的前端工具函数和 UI 组件
- **小程序开发**:深度集成微信、QQ 小程序 API
- **跨端应用**:uni-app 项目统一适配
- **DevOps 流程**:自动化构建、发布、监控工具
- **云服务集成**:腾讯云 CDN、COS、配置中心等无缝对接
---
## 功能简介
### 基础工具模块
- **字符串处理**:长度检查、随机生成、格式转换、国际化编码
- **数组操作**:扁平化、分块、排序、去重、乱序
- **对象操作**:深拷贝、合并、排序、路径处理、属性遍历
- **数字计算**:千分位格式化、比例计算、随机数、范围生成
- **日期时间**:时间戳转换、格式化、倒计时、相对时间显示
- **正则表达式**:匹配列表提取、版本号解析
### 平台适配功能
- **环境检测**:微信、QQ、Android、iOS 等运行环境识别
- **小程序工具**:页面统计、组件信息、版本更新、图片保存
- **uni-app 支持**:项目启动、路由拦截、状态缓存、响应式布局
- **地理位置**:跨平台定位、坐标转换、地图打开
### 网络与通信
- **SSE 服务器推送**:支持 Web 和小程序环境的实时消息推送
- **HTTP 请求封装**:统一的请求拦截器和错误处理
- **JSONP 跨域请求**:支持超时和回调函数配置
- **轮询请求管理**:可配置间隔和最大轮询次数
### 数据处理
- **JSON 安全解析**:避免解析异常,支持带注释的 JSON
- **CSV 数据**:生成 CSV 文件、对象数组转换
- **Excel 处理**:工作表读取、JSON 双向转换
- **Base64 编码**:支持 Unicode 和中文的安全转换
### 存储管理
- **LocalStorage 增强**:支持过期时间和自动清理
- **Cookie 管理**:获取、设置、删除完整生命周期
- **SessionStorage**:会话级数据存储
- **存储策略**:序列化机制和一致性保证
### UI 交互组件
- **水印生成**:Canvas 绘制、MutationObserver 防篡改
- **Toast 提示**:成功、失败、加载等多种状态
- **对话框**:动态创建、生命周期管理
- **Canvas 绘图**:图形绘制、图片合成、验证码生成
- **剪贴板**:Web 和小程序跨平台复制功能
### 文件操作
- **文件下载**:单个/批量下载、ZIP 打包
- **图片处理**:CDN 优化、格式转换、Base64 互转
- **Canvas 图片合并**:多图垂直合并、尺寸适配
- **文件压缩**:JSZip 集成的流式压缩
### 分享与上传
- **多平台分享**:微信、QQ 分享配置和签名生成
- **文件上传**:分片上传、断点续传、进度管理
- **UniUploader 单例**:统一的上传管理和错误处理
- **分享数据注入**:动态参数和环境适配
### 国际化支持
- **多语言字典**:动态加载和实时切换
- **Excel 翻译转换**:批量翻译工具
- **语言包管理**:统一的 i18 token 获取
### 云服务集成
- **腾讯云 CDN**:缓存预热、清除、URL 优化
- **COS 对象存储**:文件上传、下载、Bucket 管理
- **Rainbow 配置中心**:配置获取、版本对比、实时通知
- **RUM 性能监控**:性能数据收集和上报
### DevOps 工具
- **小程序 CI**:微信和 QQ 小程序自动化构建和上传
- **版本管理**:语义化版本、变更日志、标签管理
- **自动化发布**:构建、上传、通知全流程自动化
- **Git 操作**:分支管理、提交统计、MR 生成
### 条形码生成
- **多种格式支持**:CODE39、CODE128、EAN/UPC、ITF、MSI、Codabar
- **智能编码**:CODE128 自动选择最优编码子集
- **Canvas 绘制**:高精度条形码渲染
---
## 快速上手
### 安装
使用 npm 安装:
```bash
npm install t-comm -S
```
或使用 pnpm:
```bash
pnpm add t-comm -S
```
### 基本使用
#### 支持按需引入(推荐)
```typescript
import { getMonthDay } from 't-comm';
// 获取指定月份的天数
const days = getMonthDay(2022, 2); // 28
```
#### 完整引入
```typescript
import tComm from 't-comm';
// 访问所有工具函数
tComm.getMonthDay(2022, 12);
```
### 单文件引入
对于不支持 `tree-shaking` 的项目,可以使用单文件引入方式:
```typescript
// 从 lib 目录引入(CommonJS 格式)
import { timeStampFormat } from 't-comm/lib/time/time';
const stamp = new Date('2020-11-27 8:23:24').getTime();
const formatted = timeStampFormat(stamp, 'yyyy-MM-dd hh:mm:ss');
// 2020-11-27 08:23:24
```
从 `es` 目录引入,适合不支持 CommonJS 的项目:
```typescript
import { timeStampFormat } from 't-comm/es/time/time';
```
### 使用示例
```typescript
import {
// 日期时间
getMonthDay,
timeStampFormat,
getRelativeTime,
// 字符串处理
checkStringLen,
randomString,
// 数组操作
chunk,
flatten,
// 对象处理
deepEqual,
merge,
// 网络请求
httpGet,
httpPost,
// 存储
savePersist,
getPersist,
// UI 组件
showToast,
createDialog
} from 't-comm';
// 日期处理示例
const currentDays = getMonthDay(new Date().getFullYear(), new Date().getMonth() + 1);
console.log(`本月有 ${currentDays} 天`);
// 字符串处理示例
const randomStr = randomString(10);
console.log(`生成的随机字符串: ${randomStr}`);
// HTTP 请求示例
const fetchData = async () => {
try {
const data = await httpGet('https://api.example.com/data');
console.log(data);
} catch (error) {
console.error('请求失败:', error);
}
};
// 存储示例
savePersist('user', { name: '张三', age: 25 }, { expiry: 3600000 });
const user = getPersist('user');
```
### 项目构建
如果需要从源码构建:
```bash
# 安装依赖
pnpm install
# 构建项目
pnpm run build
# 运行测试
pnpm run test
# 生成文档
pnpm run docs:build
```
---
## 常见问题
### Q: 为什么有些函数导入后报错?
A: 请确保您的项目支持 ES 模块。如果使用 CommonJS 项目,请从 `t-comm/lib` 导入。同时检查 TypeScript 配置中的 `module` 和 `moduleResolution` 选项。
### Q: 如何减少打包体积?
A: `t-comm` 完全支持 tree-shaking。请使用按需引入的方式,而不是引入整个库:
```typescript
// 推荐
import { getMonthDay } from 't-comm';
// 不推荐
import * as tComm from 't-comm';
```
### Q: 小程序环境如何使用?
A: 大部分工具函数在 Web 和小程序环境通用。如果是小程序专用工具(如 `mp` 目录下的函数),会自动检测环境并调用相应 API。
### Q: 如何获取完整的 API 文档?
A: 访问[详细文档网站](https://novlan1.github.io/docs/t-comm/)查看所有模块的完整 API 说明和使用示例。
### Q: 版本更新策略是什么?
A: 项目遵循语义化版本规范(Semantic Versioning)。变更日志会在每次发布时自动生成,记录新增功能、Bug 修复和破坏性变更。
### Q: 是否支持 TypeScript?
A: 完全支持。内置完整的类型定义文件(.d.ts),提供良好的代码补全和类型检查。
### Q: 如何参与项目贡献?
A: 欢迎提交 Issue 和 Pull Request。请确保代码通过测试并遵循项目的代码规范。
### Q: 项目采用什么构建工具?
A: 使用 Rollup 进行构建,生成 CommonJS 和 ES Module 两种格式,确保在各种场景下都能正常使用。
### Q: 如何处理跨平台兼容性问题?
A: `t-comm` 内置了环境检测和平台适配层,会自动根据运行环境选择合适的 API 实现。开发者无需手动处理兼容性。
---
**详细文档**:[https://novlan1.github.io/docs/t-comm/](https://novlan1.github.io/docs/t-comm/)