@bubblesjs/utils
提供实用的工具函数集合,包含通用工具方法和类型工具。
安装
快速使用
API 文档
通用工具函数
deepMergeObject(target, source)
深度合并两个对象,支持嵌套对象的递归合并。
参数:
target:object- 目标对象source:object- 源对象
返回值:
object- 合并后的新对象
示例:
注意事项:
- 数组会被整体替换,不会进行元素级合并
- 函数、Date、RegExp 等特殊对象会被直接赋值
- 源对象的属性会覆盖目标对象的同名属性
isReadableStream(obj)
检查对象是否为可读流(ReadableStream)。
参数:
obj:any- 要检查的对象
返回值:
boolean- 如果是可读流返回 true,否则返回 false
示例:
使用场景:
- 区分不同类型的响应体
- 条件性地处理流式数据
- 适配器兼容性检查
使用场景
1. 配置对象合并
2. 响应处理适配
3. 组件属性合并
类型定义
实现原理
deepMergeObject 实现原理
- 递归合并:对于对象类型的属性,递归调用合并函数
- 类型检查:区分普通对象、数组、函数等不同类型
- 安全复制:避免引用共享,确保合并后的对象独立
isReadableStream 实现原理
- 类型检查:检查对象是否存在且为对象类型
- 特征检测:检查是否具有 ReadableStream 的特征属性和方法
- 兼容性:支持不同环境下的 ReadableStream 实现
最佳实践
1. 配置管理
2. 响应适配器
3. 工具函数组合
常见问题
Q: deepMergeObject 会修改原对象吗?
A: 不会。deepMergeObject 会创建一个新对象,不会修改传入的原对象。
Q: 如何处理数组合并?
A: 当前实现中,数组会被整体替换。如果需要数组元素合并,可以自定义处理:
Q: isReadableStream 支持哪些环境?
A: 支持现代浏览器和 Node.js 环境中的 ReadableStream。对于不支持的环境,会安全地返回 false。
总结
@bubblesjs/utils 提供了实用的工具函数,特别适合以下场景:
- 配置管理:使用
deepMergeObject进行灵活的配置合并 - 响应处理:使用
isReadableStream适配不同的响应类型 - 数据处理:在各种数据操作场景中提供可靠的工具支持
这些工具函数经过充分测试,可以安全地用于生产环境。