6
6
7
7
- 🚀 开箱即用:提供丰富的工具函数,无需重复造轮子
8
8
- 🛠️ 类型安全:使用 TypeScript 开发,提供完整的类型定义
9
- - 📦 模块化:按需引入,减小打包体积
9
+ - 📦 ** 独立函数导入** :支持单个函数导入,极致的按需加载,减小打包体积
10
+ - 🎯 ** 多格式支持** :提供 ESM、CommonJS、UMD 多种格式,适配不同环境
10
11
- 🔧 可扩展:支持自定义配置,满足不同场景需求
11
12
- 📝 文档完善:提供详细的 API 文档和使用示例
12
13
- 🔄 持续更新:定期更新,保持代码质量
14
+ - ⚡ ** 零依赖** :除必要的运行时依赖外,无额外依赖
13
15
14
16
## 安装
15
17
@@ -26,29 +28,110 @@ pnpm add @winner-fed/cloud-utils
26
28
27
29
## 使用
28
30
29
- ### 按需引入
31
+ ### 完整引入(推荐)
30
32
31
33
``` typescript
32
- import { formatDate , debounce } from ' @winner-fed/cloud-utils' ;
34
+ import { formatDate , accAdd , isEmpty } from ' @winner-fed/cloud-utils' ;
33
35
34
36
// 使用日期格式化
35
37
const formattedDate = formatDate (new Date (), ' YYYY-MM-DD' );
36
38
37
- // 使用防抖函数
38
- const debouncedFn = debounce (() => {
39
- console .log (' 执行防抖函数' );
40
- }, 300 );
39
+ // 使用精确加法
40
+ const sum = accAdd (0.1 , 0.2 ); // 0.3
41
+
42
+ // 判断是否为空
43
+ const empty = isEmpty (null ); // true
41
44
```
42
45
43
- ### 完整引入
46
+ ### 独立函数导入(按需加载)
47
+
48
+ 对于只需要少数几个函数的场景,可以直接导入独立函数,减少打包体积:
49
+
50
+ ``` typescript
51
+ // ESM 格式 - 自动选择合适的文件
52
+ import { accAdd } from ' @winner-fed/cloud-utils/accAdd' ;
53
+ import { formatDate } from ' @winner-fed/cloud-utils/formatDate' ;
54
+ import { isEmpty } from ' @winner-fed/cloud-utils/isEmpty' ;
55
+
56
+ // CommonJS 格式
57
+ const { accAdd } = require (' @winner-fed/cloud-utils/accAdd' );
58
+ const { formatDate } = require (' @winner-fed/cloud-utils/formatDate' );
59
+ ```
60
+
61
+ ### 直接路径导入
62
+
63
+ 如果需要明确指定导入格式:
64
+
65
+ ``` typescript
66
+ // 明确使用 ESM 格式
67
+ import { accAdd } from ' @winner-fed/cloud-utils/dist/esm/accAdd.js' ;
68
+
69
+ // 明确使用 CommonJS 格式
70
+ const { accAdd } = require (' @winner-fed/cloud-utils/dist/cjs/accAdd.js' );
71
+ ```
72
+
73
+ ### 完整命名空间导入
44
74
45
75
``` typescript
46
76
import * as utils from ' @winner-fed/cloud-utils' ;
47
77
48
78
// 使用工具函数
49
79
const result = utils .formatDate (new Date (), ' YYYY-MM-DD' );
80
+ const sum = utils .accAdd (0.1 , 0.2 );
50
81
```
51
82
83
+ ## 包结构
84
+
85
+ 本包提供了多种格式以适应不同的使用场景:
86
+
87
+ ```
88
+ @winner-fed/cloud-utils/
89
+ ├── dist/
90
+ │ ├── index.js # ESM 主入口
91
+ │ ├── index.cjs # CommonJS 主入口
92
+ │ ├── index.d.ts # TypeScript 声明文件
93
+ │ ├── *.d.ts # 独立函数的声明文件
94
+ │ ├── esm/ # ESM 格式的独立函数
95
+ │ │ ├── accAdd.js
96
+ │ │ ├── formatDate.js
97
+ │ │ └── ...
98
+ │ ├── cjs/ # CommonJS 格式的独立函数
99
+ │ │ ├── accAdd.js
100
+ │ │ ├── formatDate.js
101
+ │ │ └── ...
102
+ │ └── umd/ # UMD 格式(浏览器直接使用)
103
+ │ └── index.js
104
+ ```
105
+
106
+ ### 在浏览器中使用
107
+
108
+ ``` html
109
+ <!-- 通过 CDN 引入 UMD 格式 -->
110
+ <script src =" https://unpkg.com/@winner-fed/cloud-utils/dist/umd/index.js" ></script >
111
+ <script >
112
+ // 全局变量 cloudUtils
113
+ const result = cloudUtils .formatDate (new Date (), ' YYYY-MM-DD' );
114
+ const sum = cloudUtils .accAdd (0.1 , 0.2 );
115
+ </script >
116
+ ```
117
+
118
+ ## 性能对比
119
+
120
+ 不同的导入方式适用于不同的使用场景:
121
+
122
+ | 导入方式 | 包体积 | 适用场景 | 示例 |
123
+ | ---------| -------| ---------| ------|
124
+ | ** 完整引入** | ~ 94KB | 使用多个函数时推荐 | ` import { a, b, c } from '@winner-fed/cloud-utils' ` |
125
+ | ** 独立函数导入** | ~ 1-3KB/函数 | 只使用少数函数时 | ` import { accAdd } from '@winner-fed/cloud-utils/accAdd' ` |
126
+ | ** 直接路径导入** | ~ 1-3KB/函数 | 明确指定格式时 | ` import { accAdd } from '@winner-fed/cloud-utils/dist/esm/accAdd.js' ` |
127
+
128
+ ### 选择建议
129
+
130
+ - 🚀 ** 使用 3 个以上函数** :推荐完整引入
131
+ - ⚡ ** 只使用 1-2 个函数** :推荐独立函数导入
132
+ - 🎯 ** 对包体积非常敏感** :使用独立函数导入
133
+ - 🛠️ ** 需要特定格式** :使用直接路径导入
134
+
52
135
## 功能分类
53
136
54
137
### 日期处理
@@ -90,13 +173,14 @@ const result = utils.formatDate(new Date(), 'YYYY-MM-DD');
90
173
- ` getPixelRatio ` : 获取设备像素比
91
174
92
175
### 工具函数
93
- - ` debounce ` : 防抖函数
94
- - ` throttle ` : 节流函数
95
176
- ` deepClone ` : 深拷贝
96
177
- ` deepMapKeys ` : 深度映射键名
97
178
- ` promisify ` : Promise 化
98
179
- ` timeTaken ` : 计算执行时间
99
180
- ` anagrams ` : 生成字符串的所有排列组合
181
+ - ` generateGUID ` : 生成唯一标识符
182
+ - ` combineURLs ` : URL 组合
183
+ - ` equals ` : 深度比较两个值是否相等
100
184
101
185
### 数据处理
102
186
- ` merge ` : 对象合并
0 commit comments