mm_expand 1.8.2 → 1.8.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (5) hide show
  1. package/README.md +253 -56
  2. package/index.js +256 -191
  3. package/lib/eventer.js +9 -0
  4. package/package.json +37 -37
  5. package/test.js +448 -624
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # mm_expand
2
2
 
3
- 这是超级美眉原型函数拓展模块,更有利于对stringarrayobject的操作,避免出错,简化业务逻辑。
3
+ 这是超级美眉原型函数拓展模块,为JavaScript原生类型(StringArrayNumber、Date等)提供丰富的拓展方法,使开发者能够更便捷地操作数据,简化业务逻辑,提高开发效率。
4
4
 
5
5
  ## 安装
6
6
 
@@ -8,16 +8,30 @@
8
8
  npm install mm_expand
9
9
  ```
10
10
 
11
- ## 基础函数
11
+ ## 使用方法
12
12
 
13
- ### info(obj)
14
- - 描述:获取函数或对象的详细信息
13
+ ```javascript
14
+ // 引入模块
15
+ const $ = require('mm_expand');
16
+
17
+ // 开始使用拓展方法
18
+ console.log('test.json'.fullname());
19
+ console.log([1, 2, 3].copy());
20
+ console.log('2024-01-01'.toTime());
21
+ ```
22
+
23
+ ## 核心功能模块
24
+
25
+ ### 基础工具函数
26
+
27
+ #### $.info(obj)
28
+ - 描述:获取函数或对象的详细信息,用于调试和开发
15
29
  - 参数:
16
30
  - obj: 要查看的函数或对象
17
31
  - 返回值:返回对象的详细字符串表示
18
32
 
19
- ### sleep(milliSeconds, obj, key)
20
- - 描述:延迟执行(休眠)函数
33
+ #### $.sleep(milliSeconds, obj, key)
34
+ - 描述:延迟执行(休眠)函数,返回Promise
21
35
  - 参数:
22
36
  - milliSeconds: 休眠的毫秒数
23
37
  - obj: 判断对象或函数(可选)
@@ -25,128 +39,284 @@ npm install mm_expand
25
39
  - 示例:
26
40
  ```javascript
27
41
  // 简单休眠
28
- sleep(2000);
42
+ await $.sleep(2000);
29
43
 
30
44
  // 带条件的休眠
31
45
  var obj = {ok: false};
32
- sleep(2000, obj, 'ok');
46
+ await $.sleep(2000, obj, 'ok');
33
47
  ```
34
48
 
35
- ### as(obj, query, all)
36
- - 描述:判断对象是否相似
49
+ #### $.as(obj, defaultValue)
50
+ - 描述:当对象为null或undefined时返回默认值,否则返回原对象
37
51
  - 参数:
38
- - obj: 被判断对象
39
- - query: 用作判断的对象
40
- - all: 是否要求完全相同
41
- - 返回值:相似返回true,否则返回false
52
+ - obj: 要检查的对象
53
+ - defaultValue: 当obj为null或undefined时的默认返回值
54
+ - 返回值:obj不为null/undefined时返回obj,否则返回defaultValue
42
55
 
43
- ### speed(func, times)
44
- - 描述:测试函数执行速度
56
+ #### $.speed(func, times)
57
+ - 描述:测试函数执行速度性能
45
58
  - 参数:
46
59
  - func: 要测试的函数
47
60
  - times: 测试次数,默认1000000次
48
61
 
49
- ## 对象操作
62
+ ### 对象操作
50
63
 
51
- ### push(objA, objB, bl)
52
- - 描述:添加对象属性
64
+ #### $.push(objA, objB, bl)
65
+ - 描述:合并对象属性
53
66
  - 参数:
54
67
  - objA: 被添加的对象
55
68
  - objB: 用作添加的对象
56
69
  - bl: 是否补充没有的对象
57
70
  - 返回值:合并后的新对象
58
71
 
59
- ### clear(obj)
72
+ #### $.clear(obj)
60
73
  - 描述:清空对象值
61
74
  - 参数:
62
75
  - obj: 要清空的对象
63
76
  - 返回值:返回清空后的对象
64
77
 
65
- ### copy(obj, has)
66
- - 描述:拷贝对象
78
+ #### $.copy(obj, has)
79
+ - 描述:深度拷贝对象
67
80
  - 参数:
68
81
  - obj: 被拷贝的对象
69
82
  - has: 是否只拷贝非空值
70
- - 返回值:新对象
83
+ - 返回值:新的拷贝对象
71
84
 
72
- ### keys(obj, file)
73
- - 描述:查看对象所有属性
85
+ #### $.keys(obj, file)
86
+ - 描述:获取对象所有属性名
74
87
  - 参数:
75
88
  - obj: 要查看的对象
76
89
  - file: 保存结果的文件路径(可选)
77
90
 
78
- ## 数据转换
91
+ ### 数据转换
79
92
 
80
- ### toJson(obj, format)
81
- - 描述:将对象转为JSON字符串
93
+ #### $.toJson(obj, format)
94
+ - 描述:将对象转换为JSON字符串
82
95
  - 参数:
83
96
  - obj: 要转换的对象
84
- - format: 是否格式化输出
97
+ - format: 是否格式化输出(缩进美化)
85
98
  - 返回值:JSON格式字符串
86
99
 
87
- ### toXml(obj, format, mode)
88
- - 描述:将对象转为XML字符串
100
+ #### $.toXml(obj, format, mode)
101
+ - 描述:将对象转换为XML字符串
89
102
  - 参数:
90
103
  - obj: 要转换的对象
91
- - format: 是否格式化输出
104
+ - format: 是否格式化输出(缩进美化)
92
105
  - mode: 是否使用属性格式
93
106
  - 返回值:XML格式字符串
94
107
 
95
- ### toUrl(obj, url)
96
- - 描述:将对象转为URL参数字符串
108
+ #### $.toUrl(obj, url)
109
+ - 描述:将对象转换为URL参数字符串
97
110
  - 参数:
98
111
  - obj: 要转换的对象
99
112
  - url: 基础URL地址(可选)
100
113
  - 返回值:URL参数格式字符串
101
114
 
102
- ## 文件操作
115
+ ### String原型拓展
116
+
117
+ #### String.prototype.fullname()
118
+ - 描述:获取文件的完整路径
119
+ - 返回值:完整的文件路径字符串
120
+
121
+ #### String.prototype.isFile()
122
+ - 描述:检查路径是否为文件
123
+ - 返回值:是文件返回true,否则返回false
124
+
125
+ #### String.prototype.isDir()
126
+ - 描述:检查路径是否为目录
127
+ - 返回值:是目录返回true,否则返回false
128
+
129
+ #### String.prototype.saveText(data, encode)
130
+ - 描述:将字符串保存为文本文件
131
+ - 参数:
132
+ - data: 要保存的数据
133
+ - encode: 编码格式,默认'utf8'
134
+ - 返回值:保存成功返回true,失败返回false
135
+
136
+ #### String.prototype.loadText(encode)
137
+ - 描述:读取文件内容为字符串
138
+ - 参数:
139
+ - encode: 编码格式,默认'utf8'
140
+ - 返回值:文件内容字符串
141
+
142
+ #### String.prototype.saveJson(data, encode)
143
+ - 描述:将JSON对象保存为文件
144
+ - 参数:
145
+ - data: 要保存的JSON数据
146
+ - encode: 编码格式,默认'utf8'
147
+ - 返回值:保存成功返回true,失败返回false
148
+
149
+ #### String.prototype.loadJson(encode)
150
+ - 描述:读取JSON文件内容
151
+ - 参数:
152
+ - encode: 编码格式,默认'utf8'
153
+ - 返回值:解析后的JSON对象
154
+
155
+ #### String.prototype.checkFormat(type)
156
+ - 描述:检查字符串格式
157
+ - 参数:
158
+ - type: 格式类型,如'idcard'(身份证)、'phone'(手机号)等
159
+ - 返回值:格式正确返回true,否则返回false
160
+
161
+ #### String.prototype.toTime(format)
162
+ - 描述:将字符串转换为Date对象
163
+ - 参数:
164
+ - format: 日期格式(可选)
165
+ - 返回值:Date对象
166
+
167
+ #### String.prototype.toTimestamp()
168
+ - 描述:将日期字符串转换为时间戳
169
+ - 返回值:时间戳数字
170
+
171
+ ### Array原型拓展
172
+
173
+ #### Array.prototype.copy()
174
+ - 描述:复制数组
175
+ - 返回值:新的数组实例
176
+
177
+ #### Array.prototype.clear()
178
+ - 描述:清空数组内容
179
+ - 返回值:空数组
180
+
181
+ #### Array.prototype.to2D(cols)
182
+ - 描述:将一维数组转换为二维数组
183
+ - 参数:
184
+ - cols: 每行的列数
185
+ - 返回值:二维数组
186
+
187
+ #### Array.prototype.addVal(val)
188
+ - 描述:向数组添加值(如果不存在)
189
+ - 参数:
190
+ - val: 要添加的值
191
+ - 返回值:添加后的数组
192
+
193
+ #### Array.prototype.delVal(val)
194
+ - 描述:从数组中删除指定值
195
+ - 参数:
196
+ - val: 要删除的值
197
+ - 返回值:删除后的数组
198
+
199
+ #### Array.prototype.has(val)
200
+ - 描述:检查数组是否包含指定值
201
+ - 参数:
202
+ - val: 要检查的值
203
+ - 返回值:包含返回true,否则返回false
204
+
205
+ ### Number原型拓展
103
206
 
104
- ### File 类
207
+ #### Number.prototype.toFloor(digits)
208
+ - 描述:向下取整
209
+ - 参数:
210
+ - digits: 小数位数(可选)
211
+ - 返回值:取整后的数字
212
+
213
+ #### Number.prototype.toCeil(digits)
214
+ - 描述:向上取整
215
+ - 参数:
216
+ - digits: 小数位数(可选)
217
+ - 返回值:取整后的数字
105
218
 
106
- #### File.prototype.getAll(dir, keyword, keyword_dir)
107
- - 描述:搜索目录下所有文件
219
+ #### Number.prototype.toRound(digits)
220
+ - 描述:四舍五入
221
+ - 参数:
222
+ - digits: 小数位数(可选)
223
+ - 返回值:四舍五入后的数字
224
+
225
+ #### Number.prototype.toTime()
226
+ - 描述:将时间戳转换为Date对象
227
+ - 返回值:Date对象
228
+
229
+ #### Number.prototype.stamp()
230
+ - 描述:获取当前时间戳
231
+ - 返回值:时间戳数字
232
+
233
+ ### Date原型拓展
234
+
235
+ #### Date.prototype.toStr(format)
236
+ - 描述:将Date对象格式化为字符串
237
+ - 参数:
238
+ - format: 日期格式字符串,如'yyyy-MM-dd hh:mm:ss'
239
+ - 返回值:格式化后的日期字符串
240
+
241
+ ### 文件操作
242
+
243
+ #### File 类
244
+
245
+ ##### File.prototype.getAll(dir, keyword, keyword_dir)
246
+ - 描述:递归搜索目录下所有文件
108
247
  - 参数:
109
248
  - dir: 目录地址
110
- - keyword: 文件搜索关键词
111
- - keyword_dir: 目录搜索关键词
249
+ - keyword: 文件搜索关键词(可选)
250
+ - keyword_dir: 目录搜索关键词(可选)
112
251
  - 返回值:文件路径数组
113
252
 
114
- #### File.prototype.get(dir, keyword)
115
- - 描述:获取当前目录下所有文件
253
+ ##### File.prototype.get(dir, keyword)
254
+ - 描述:获取当前目录下所有文件(不递归)
116
255
  - 参数:
117
256
  - dir: 目录地址
118
- - keyword: 搜索关键词
257
+ - keyword: 搜索关键词(可选)
119
258
  - 返回值:文件路径数组
120
259
 
121
- #### File.prototype.load(file, encode)
260
+ ##### File.prototype.load(file, encode)
122
261
  - 描述:加载文件内容
123
262
  - 参数:
124
263
  - file: 文件路径
125
- - encode: 编码方式
264
+ - encode: 编码方式,默认'utf8'
126
265
  - 返回值:文件内容字符串
127
266
 
128
- #### File.prototype.save(file, data, encode)
129
- - 描述:保存文件
267
+ ##### File.prototype.save(file, data, encode)
268
+ - 描述:保存文件内容
130
269
  - 参数:
131
270
  - file: 文件路径
132
- - data: 要保存的数据
133
- - encode: 编码方式
271
+ - data: 要保存的数据内容
272
+ - encode: 编码方式,默认'utf8'
134
273
  - 返回值:保存成功返回true,否则返回false
135
274
 
136
- #### File.prototype.copy(sourcePath, targetPath)
275
+ ##### File.prototype.copy(sourcePath, targetPath)
137
276
  - 描述:复制文件
138
277
  - 参数:
139
278
  - sourcePath: 源文件路径
140
279
  - targetPath: 目标路径
141
280
 
142
- #### File.prototype.del(file)
281
+ ##### File.prototype.delete(file)
143
282
  - 描述:删除文件
144
283
  - 参数:
145
284
  - file: 要删除的文件路径
146
285
 
147
- ## 代码执行
286
+ ### 事件系统
287
+
288
+ #### $.eventer
289
+ - 描述:事件管理器实例
290
+
291
+ ##### $.eventer.on(eventName, handler, key)
292
+ - 描述:注册事件监听器
293
+ - 参数:
294
+ - eventName: 事件名称
295
+ - handler: 事件处理函数
296
+ - key: 事件处理器标识(可选)
297
+
298
+ ##### $.eventer.once(eventName, handler, key)
299
+ - 描述:注册一次性事件监听器(只触发一次)
300
+ - 参数:
301
+ - eventName: 事件名称
302
+ - handler: 事件处理函数
303
+ - key: 事件处理器标识(可选)
304
+
305
+ ##### $.eventer.run(eventName, ...args)
306
+ - 描述:触发事件
307
+ - 参数:
308
+ - eventName: 事件名称
309
+ - ...args: 传递给事件处理器的参数
148
310
 
149
- ### run_code(code, cm, em, qm, rm)
311
+ ##### $.eventer.del(eventName, key)
312
+ - 描述:移除事件监听器
313
+ - 参数:
314
+ - eventName: 事件名称
315
+ - key: 要移除的处理器标识(可选,不提供则移除所有)
316
+
317
+ ### 代码执行
318
+
319
+ #### $.run_code(code, cm, em, qm, rm)
150
320
  - 描述:执行动态代码
151
321
  - 参数:
152
322
  - code: 要执行的代码字符串
@@ -156,11 +326,38 @@ sleep(2000, obj, 'ok');
156
326
  - rm: 结果参数
157
327
  - 返回值:执行结果
158
328
 
329
+ ## 模块加载与管理
330
+
331
+ #### $.load(id, module)
332
+ - 描述:加载模块
333
+ - 参数:
334
+ - id: 模块ID
335
+ - module: 模块对象
336
+
337
+ #### $.unload(id)
338
+ - 描述:卸载模块
339
+ - 参数:
340
+ - id: 模块ID
341
+
342
+ #### $.reload(id)
343
+ - 描述:重新加载模块
344
+ - 参数:
345
+ - id: 模块ID
346
+
347
+ ## 最佳实践
348
+
349
+ 1. **文件路径处理**:使用`String.prototype.fullname()`获取完整路径,确保跨平台兼容性
350
+ 2. **错误处理**:所有文件操作(saveText、saveJson等)都返回布尔值表示成功/失败,建议检查返回值
351
+ 3. **异步操作**:对于需要等待的操作,如sleep、事件触发等,使用await/async语法
352
+ 4. **对象深拷贝**:使用`$.copy()`进行对象深拷贝,避免引用问题
353
+ 5. **事件管理**:使用$.eventer系统进行事件发布订阅,避免直接函数调用导致的耦合
354
+
159
355
  ## 注意事项
160
356
 
161
- 1. 所有文件路径操作都支持跨平台,内部会自动处理路径分隔符。
162
- 2. 文件操作相关函数建议增加错误处理。
163
- 3. 在处理大量数据时,建议使用异步方式。
357
+ 1. 所有文件路径操作都支持跨平台,内部会自动处理路径分隔符
358
+ 2. 文件操作相关函数已添加错误处理,返回布尔值表示操作结果
359
+ 3. 在处理大量数据时,建议使用异步方式避免阻塞主线程
360
+ 4. 原型扩展可能与其他库冲突,使用时请注意命名空间隔离
164
361
 
165
362
  ## 许可证
166
363