# SinmaJS 文档中心
欢迎使用 SinmaJS!这里是 SinmaJS 的完整 API 文档,包含了所有模块的详细说明、使用方法和实际示例。
## 📚 文档导航
[TOC]
### 核心模块
#### 🔍 [数据验证模块](./validator.md)
专为中文开发者优化的数据验证工具,支持手机号、身份证、邮箱等多种格式验证。
**主要功能:**
- `isPhone(value, strict)` - 手机号验证(支持严格模式)
- `isEmail(value)` - 邮箱格式验证
- `isIdCard(value, strict)` - 身份证号验证(支持校验位验证)
- `isEmpty(value)` - 空值检测
- `isNumber(value)` - 数字类型验证
- `isChinese(value)` - 中文字符验证
- `isUrl(value)` - URL格式验证
```javascript
// 快速示例
sinma.isPhone('13812345678'); // true
sinma.isEmail('user@example.com'); // true
sinma.isIdCard('440301199001011234'); // true
```
---
#### 📝 [字符串处理模块](./string.md)
提供丰富的字符串操作功能,包括截断、格式化、大小写转换等。
**主要功能:**
- `truncate(str, length, suffix)` - 字符串截断
- `capitalize(str)` - 首字母大写
- `camelCase(str)` - 驼峰命名转换
- `randomString(length, includeSymbols)` - 随机字符串生成
- `stripHtml(str)` - 去除HTML标签
```javascript
// 快速示例
sinma.truncate('很长的文本内容', 5); // '很长的文本...'
sinma.capitalize('hello world'); // 'Hello world'
sinma.camelCase('user_name'); // 'userName'
sinma.randomString(8); // 'aBc123Xy'
```
---
#### 💰 [数字处理模块](./number.md)
解决JavaScript浮点数精度问题,提供精确运算和货币格式化功能。
**主要功能:**
- `formatCurrency(amount, currency)` - 货币格式化
- `add(a, b)` - 精确加法运算
- `subtract(a, b)` - 精确减法运算
- `multiply(a, b)` - 精确乘法运算
- `divide(a, b)` - 精确除法运算
- `randomInt(min, max)` - 随机整数生成
```javascript
// 快速示例
sinma.formatCurrency(1234.56); // '¥1,234.56'
sinma.add(0.1, 0.2); // 0.3 (精确结果)
sinma.multiply(0.2, 3); // 0.6 (避免精度问题)
```
---
#### 📅 [日期处理模块](./date.md)
全面的日期时间处理工具,支持格式化、年龄计算、闰年判断等。
**主要功能:**
- `formatDate(date, format)` - 日期格式化
- `getTimestamp(date)` - 获取时间戳
- `calculateAge(birthday)` - 计算年龄
- `isLeapYear(year)` - 闰年判断
- `now(format)` - 获取当前时间
```javascript
// 快速示例
sinma.formatDate(new Date(), 'YYYY-MM-DD HH:mm:ss'); // '2023-12-25 14:30:45'
sinma.calculateAge('1990-01-01'); // 33
sinma.isLeapYear(2024); // true
```
---
#### 🔢 [数组处理模块](./array.md)
提供数组操作的实用工具函数。
**主要功能:**
- `unique(arr)` - 数组去重
- `chunk(arr, size)` - 数组分块
- `flatten(arr, depth)` - 数组扁平化
- `shuffle(arr)` - 数组洗牌
```javascript
// 快速示例
sinma.unique([1, 2, 2, 3]); // [1, 2, 3]
sinma.chunk([1, 2, 3, 4, 5], 2); // [[1, 2], [3, 4], [5]]
sinma.shuffle([1, 2, 3, 4, 5]); // [3, 1, 5, 2, 4]
```
---
#### 🏷️ [对象处理模块](./object.md)
对象操作工具,支持深度克隆、合并、属性获取等。
**主要功能:**
- `clone(obj)` - 深度克隆
- `merge(target, ...sources)` - 对象合并
- `get(obj, path, defaultValue)` - 安全属性获取
```javascript
// 快速示例
const obj = { a: 1, b: { c: 2 } };
sinma.clone(obj); // 深度克隆对象
sinma.get(obj, 'b.c', 0); // 2
```
---
#### 🇨🇳 [中文处理模块](./chinese.md)
专为中文环境设计的处理工具。
**主要功能:**
- `maskPhone(phone)` - 手机号脱敏
- `maskIdCard(idCard)` - 身份证脱敏
- `maskName(name)` - 姓名脱敏
- `toPinyin(chinese)` - 中文转拼音
- `getProvinceByIdCard(idCard)` - 从身份证获取省份
- `getBirthDateByIdCard(idCard)` - 从身份证获取生日
- `getGenderByIdCard(idCard)` - 从身份证获取性别
```javascript
// 快速示例
sinma.maskPhone('13812345678'); // '138****5678'
sinma.getProvinceByIdCard('440301199001011234'); // '广东'
sinma.toPinyin('中国'); // 'zhongguo'
```
---
#### 🔗 [URL处理模块](./url.md)
URL参数处理和构建工具。
**主要功能:**
- `getQueryParam(name, url)` - 获取URL参数
- `buildUrl(base, params)` - 构建URL
```javascript
// 快速示例
sinma.getQueryParam('name', '?name=张三'); // '张三'
sinma.buildUrl('/api/users', {page: 1}); // '/api/users?page=1'
```
---
#### 🎨 [DOM操作模块](./dom.md)
浏览器DOM操作辅助工具。
**主要功能:**
- `setOpacity(element, opacity)` - 设置透明度
- `imageToBase64(img)` - 图片转Base64
---
#### 🛠️ [工具函数模块](./utils.md)
通用工具函数集合。
**主要功能:**
- `debounce(func, delay)` - 防抖函数
- `throttle(func, delay)` - 节流函数
- `sleep(ms)` - 延迟执行
- `getType(value)` - 获取数据类型
```javascript
// 快速示例
const debouncedFn = sinma.debounce(searchFn, 300);
await sinma.sleep(1000); // 等待1秒
sinma.getType([]); // 'array'
```
---
#### ⛓️ [链式调用模块](./chain.md)
提供链式调用语法糖。
**主要功能:**
- `chain(value)` - 创建链式调用包装器
```javascript
// 快速示例
const result = sinma.chain('hello world')
.capitalize()
.truncate(5)
.unwrap(); // 'Hello...'
```
## 🚀 快速开始
### 安装
```bash
npm install sinma.js
```
### 引用方式
#### ES6 模块
```javascript
import sinma from 'sinma.js';
// 或解构引用
import { isPhone, formatCurrency, formatDate } from 'sinma.js';
```
#### CommonJS
```javascript
const sinma = require('sinma.js');
```
#### 浏览器CDN
```html
<script src="https://unpkg.com/sinma.js@latest/dist/sinma.min.js"></script>
```
### 基础用法
```javascript
// 数据验证
if (sinma.isPhone('13812345678') && sinma.isEmail('user@test.com')) {
console.log('数据验证通过');
}
// 字符串处理
const title = sinma.truncate(sinma.capitalize('hello world'), 8);
console.log(title); // 'Hello wo...'
// 数字计算
const total = sinma.add(sinma.multiply(99.9, 2), 0.2);
console.log(sinma.formatCurrency(total)); // '¥200.00'
// 日期处理
const userAge = sinma.calculateAge('1990-01-01');
const now = sinma.now('YYYY-MM-DD HH:mm');
console.log(`用户年龄:${userAge},当前时间:${now}`);
// 数组处理
const uniqueItems = sinma.unique([1, 2, 2, 3, 3]);
const chunks = sinma.chunk(uniqueItems, 2);
console.log(chunks); // [[1, 2], [3]]
// 中文处理
const maskedPhone = sinma.maskPhone('13812345678');
const province = sinma.getProvinceByIdCard('440301199001011234');
console.log(`脱敏手机号:${maskedPhone},省份:${province}`);
```
## 🎯 特色功能
### 专为中文优化
- 支持中文姓名、手机号、身份证等本土化验证
- 提供数据脱敏、拼音转换等中文特色功能
- 从身份证号提取省份、生日、性别等信息
### 精确数值运算
- 解决JavaScript浮点数精度问题
- 提供精确的加减乘除运算
- 支持货币格式化和千分位显示
### 向后兼容
- 保留所有旧版本API别名
- 平滑升级,无需修改现有代码
- 支持多种模块化格式
### 链式调用
```javascript
sinma.chain([1, 2, 2, 3, 1])
.unique()
.shuffle()
.unwrap();
```
## 📋 版本兼容性
### 浏览器支持
- Chrome >= 55
- Firefox >= 53
- Safari >= 10
- Edge >= 15
- IE >= 9 (需要polyfill)
### Node.js支持
- Node.js >= 10.0.0
## 🤝 贡献指南
我们欢迎社区贡献!如果您发现bug或有新功能建议,请:
1. 在GitHub提交Issue
2. Fork项目并创建功能分支
3. 提交Pull Request
## 📞 技术支持
- **官网**: [www.sinma.net](http://www.sinma.net/)
- **文档**: [看云文档](https://www.kancloud.cn/sinma/sinmajs/3151960)
- **作者**: Sinma <sinma@qq.com>
- **QQ**: 42033223
## 📄 许可证
本项目采用 ISC 许可证。详见 [LICENSE](../LICENSE) 文件。
---
## 📖 更多资源
- [完整API参考](./api-reference.md)
- [最佳实践指南](./best-practices.md)
- [常见问题解答](./faq.md)
- [版本更新日志](../CHANGELOG.md)
**💡 提示**: 点击上方模块链接查看详细的API说明、参数说明、返回值说明和完整的使用示例。
*****
