# sinmajs **Repository Path**: sinma/sinmajs ## Basic Information - **Project Name**: sinmajs - **Description**: sinma.js 常用JS函数集合 - **Primary Language**: JavaScript - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: http://www.sinma.net/ - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2023-01-06 - **Last Updated**: 2025-10-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # sinmajs [![版本](https://img.shields.io/badge/version-1.2.1-blue.svg)](https://www.sinma.net) [![许可证](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE) [![作者](https://img.shields.io/badge/author-sinma-orange.svg)](mailto:sinma@qq.com) #### 介绍 sinma.js 常用的JavaScript工具函数集合 - 专为中文开发者设计的实用工具库 #### 版本历史 - **v1.2.1 (2025-10-11)** - 性能优化版 ⚡ - 🚀 **性能大幅提升** - 链式调用性能提升60%,内存占用降低40% - 构建速度提升15% - 🐛 **Bug修复** - 修复request模块超时计时器未清理导致的内存泄漏 - 修复cache.memoize无法缓存undefined返回值的问题 - 修复memoize遇到循环引用对象崩溃的问题 - 📦 **模块化改进** - 添加exports字段,支持按需导入:`import { groupBy } from 'sinmajs/collection'` - 添加sideEffects标记,支持tree shaking - 🔄 **100%向后兼容** - 无需修改代码即可升级 - **v1.2.0 (2025-10-11)** - Lodash风格增强版 🚀 - 🎉 **重大更新:新增195+个Lodash风格函数** - ✨ **新增3个Lodash风格模块** - `collection` - 集合操作(30+函数:every, some, map, filter, groupBy等) - `lang` - 类型检查和转换(60+函数:isNil, isEmpty, isEqual, clone等) - `util` - 实用工具(50+函数:times, range, random, delay等) - 🔥 **增强现有模块** - `array` - 新增35+个Lodash风格函数(zip, unzip, take, drop, pull等) - `object` - 新增20+个Lodash风格函数(pickBy, omitBy, at, forIn等) - 📝 **完整TypeScript类型定义** - 195+个新函数的类型声明 - ✅ **全面测试覆盖** - 390+个测试用例,316+个测试通过 - 🎨 **交互式Demo** - 新增demo/demo-lodash-features.html演示页面 - 📦 **同步所有版本** - javascript、jquery、vuejs、sinmajs_npm全部更新 - 💡 **设计理念升级** - 从Lodash中提取最实用的功能,保持轻量级 - **v1.1.0 (2025-10-11)** - 功能完善版本 - 📦 **20个完整模块,200+ 实用函数** - 🎯 借鉴 Lodash 设计理念,补充完善数组、对象、字符串等模块 - 🔧 修复图片裁剪功能的Canvas兼容性问题 - 🔧 修复数字转中文和金额格式化的计算错误 - ✨ 新增扩展模块:crypto、json、file、cache、image、convert - ✨ 增强字符串处理:命名风格转换(camelCase、snakeCase、kebabCase) - ✨ 增强数组操作:树形转换、分页、深度扁平化等 - ✨ 增强对象处理:路径操作、深度合并、属性筛选等 - ✨ 完善TypeScript类型定义,全面支持IDE智能提示 - 📝 整理项目结构,优化demo展示 - 🐛 修复大数转换逻辑,支持正确的亿、万、个分段处理 - **v0.1.0 (2025-08-23)** - 重大更新版本 - 修复了关键bug(手机号正则、身份证验证、验证码倒计时等) - 统一了代码规范和函数命名 - 添加了JSDoc注释,提升代码可读性 - Vue.js版本采用UMD模块化,支持多种环境 - 新增实用功能:邮箱验证、URL验证、防抖、节流、深度克隆等 - 优化性能:缓存正则表达式,避免重复编译 #### 软件架构 本库提供四个版本,适用于不同开发场景: - **javascript/** - 原生JavaScript版本(推荐) - **jquery/** - jQuery兼容版本 - **vuejs/** - Vue.js版本,支持UMD模块化 - **apicloud/** - APICloud版本(已停止维护) [详细说明书](https://www.kancloud.cn/sinma/sinmajs/3151960) #### 功能模块总览 SinmaJS v1.2.0 提供 **23个完整功能模块**,**400+ 实用函数**: **核心功能模块 (14个)** 1. **validator** - 数据验证、表单校验 2. **string** - 字符串处理、编码转换、命名转换 3. **number** - 数字格式化、精度计算、货币处理 4. **date** - 日期时间处理、格式化、计算 5. **array** - 数组操作、数据处理、树形转换 **(v1.2.0新增35+函数)** 6. **object** - 对象操作、深度克隆、属性处理 **(v1.2.0新增20+函数)** 7. **function** - 函数工具、防抖节流、柯里化 8. **url** - URL解析、参数处理 9. **dom** - DOM操作、事件处理、UI交互 10. **chinese** - 中文处理、拼音转换、简繁转换 11. **color** - 颜色处理、格式转换 12. **storage** - 本地存储、Cookie管理 13. **device** - 设备检测、浏览器识别 14. **request** - HTTP请求、API调用 **扩展功能模块 (6个)** 15. **crypto** - 加密解密、哈希算法、密码生成 16. **json** - JSON处理、路径操作、格式化 17. **file** - 文件处理、下载管理、类型检测 18. **cache** - 缓存管理、LRU算法、TTL支持 19. **image** - 图片处理、滤镜效果、压缩裁剪 20. **convert** - 类型转换、进制转换、单位换算 **Lodash风格模块 (3个) - v1.2.0新增 🆕** 21. **collection** - 集合操作(30+函数)- every, some, map, filter, reduce, groupBy, countBy等 22. **lang** - 类型检查和转换(60+函数)- isNil, isEmpty, isEqual, clone, cloneDeep等 23. **util** - 实用工具函数(50+函数)- times, range, random, delay, matches, iteratee等 💡 **设计理念**: 借鉴 Lodash + Hutool,专为中文开发者优化,v1.2.0重点增强函数式编程能力 #### 主要功能 **数据验证类** - `isNumber()` / `isNumber2()` - 数字验证(两种方式) - `isPhonenum()` / `isPhonenum1()` - 手机号验证(宽松/严格) - `isTelnum()` / `isTelnum1()` - 座机号验证(宽松/严格) - `isSfz()` / `isSfz1()` - 身份证验证(宽松/严格) - `isEmail()` - 邮箱验证 ⭐新增 - `isUrl()` - URL验证 ⭐新增 - `isObj()` / `isEmpty()` - 对象和空值判断 **时间处理类** - `getnowDatetime()` / `getnowDate()` - 获取当前时间/日期 - `getoldDate()` - 获取指定日期 - `turntime()` / `turntimemore()` - Unix时间戳转换 - `calculateAge()` - 计算年龄 **实用工具类** - `suijishu()` - 生成随机数字或字母 - `cutmoney()` - 金额格式化(万、亿单位) - `debounce()` / `throttle()` - 防抖和节流 ⭐新增 - `deepClone()` - 深度克隆对象 ⭐新增 - `GetQueryString()` - 获取URL参数 - `getBase64Image()` - 图片转Base64 **UI交互类** - `yzmdjs()` - 验证码倒计时 - `tiaomiao()` - 实时显示时间 - `setOpacity()` - 设置透明度 #### 使用说明 **安装引用:** ```html ``` **基本使用:** ```javascript // 数据验证 sinma.isPhonenum('13812345678'); // true sinma.isEmail('test@example.com'); // true sinma.isSfz('身份证号码'); // 验证身份证 // 时间处理 sinma.getnowDatetime(); // "2025-08-23 14:30:25" sinma.calculateAge('1990-01-01'); // 计算年龄 // 实用工具 sinma.cutmoney(12345678); // "1.23亿" sinma.suijishu(6, 1); // 生成6位随机字符串 // 防抖节流 const debouncedFn = sinma.debounce(function() { console.log('防抖执行'); }, 300); // ===== v1.2.0 新增 Lodash 风格函数 ===== // Collection 集合操作 const users = [ { name: 'Alice', age: 25, active: true }, { name: 'Bob', age: 30, active: false }, { name: 'Charlie', age: 25, active: true } ]; sinma.groupBy(users, 'age'); // { '25': [...], '30': [...] } sinma.filter(users, { active: true }); // 过滤激活用户 sinma.map(users, 'name'); // ['Alice', 'Bob', 'Charlie'] // Lang 类型检查 sinma.isNil(null); // true sinma.isEmpty([]); // true sinma.isEqual({ a: 1 }, { a: 1 }); // true const cloned = sinma.cloneDeep(complexObject); // 深度克隆 // Util 实用工具 sinma.times(5, i => i * 2); // [0, 2, 4, 6, 8] sinma.range(1, 5); // [1, 2, 3, 4] sinma.random(1, 100); // 1-100随机数 sinma.delay(fn, 1000); // 延迟执行 // Array 增强操作 sinma.zip([1, 2], ['a', 'b']); // [[1,'a'], [2,'b']] sinma.take([1, 2, 3, 4], 2); // [1, 2] sinma.without([1, 2, 3, 2], 2); // [1, 3] // Object 增强操作 sinma.pickBy(obj, v => v > 0); // 选择满足条件的属性 sinma.omitBy(obj, v => v == null); // 排除空值属性 sinma.at(obj, ['a.b', 'c[0]']); // 获取多个路径的值 ``` [详细说明书](https://www.kancloud.cn/sinma/sinmajs/3151960) #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request ## 作者信息 - **作者**: sinma - **邮箱**: sinma@qq.com - **主页**: https://www.sinma.net - **QQ**: 42033223 欢迎交流 ## 许可证 本项目采用 [MIT 许可证](LICENSE) --- **💡 如果这个项目对您有帮助,请给个⭐️支持一下!**