Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

winjs-dev/cloud-utils

Open more actions menu

Repository files navigation

@winner-fed/cloud-utils

一个实用的工具类库,提供丰富的工具函数,帮助开发者提高开发效率。

特性

  • 🚀 开箱即用:提供丰富的工具函数,无需重复造轮子
  • 🛠️ 类型安全:使用 TypeScript 开发,提供完整的类型定义
  • 📦 独立函数导入:支持单个函数导入,极致的按需加载,减小打包体积
  • 🎯 多格式支持:提供 ESM、CommonJS、UMD 多种格式,适配不同环境
  • 🔧 可扩展:支持自定义配置,满足不同场景需求
  • 📝 文档完善:提供详细的 API 文档和使用示例
  • 🔄 持续更新:定期更新,保持代码质量
  • 零依赖:除必要的运行时依赖外,无额外依赖

安装

# 使用 npm
npm install @winner-fed/cloud-utils

# 使用 yarn
yarn add @winner-fed/cloud-utils

# 使用 pnpm
pnpm add @winner-fed/cloud-utils

使用

完整引入(推荐)

import { formatDate, accAdd, isEmpty } from '@winner-fed/cloud-utils';

// 使用日期格式化
const formattedDate = formatDate(new Date(), 'YYYY-MM-DD');

// 使用精确加法
const sum = accAdd(0.1, 0.2); // 0.3

// 判断是否为空
const empty = isEmpty(null); // true

独立函数导入(按需加载)

对于只需要少数几个函数的场景,可以直接导入独立函数,减少打包体积:

// ESM 格式 - 自动选择合适的文件
import { accAdd } from '@winner-fed/cloud-utils/accAdd';
import { formatDate } from '@winner-fed/cloud-utils/formatDate';
import { isEmpty } from '@winner-fed/cloud-utils/isEmpty';

// CommonJS 格式
const { accAdd } = require('@winner-fed/cloud-utils/accAdd');
const { formatDate } = require('@winner-fed/cloud-utils/formatDate');

直接路径导入

如果需要明确指定导入格式:

// 明确使用 ESM 格式
import { accAdd } from '@winner-fed/cloud-utils/dist/esm/accAdd.js';

// 明确使用 CommonJS 格式
const { accAdd } = require('@winner-fed/cloud-utils/dist/cjs/accAdd.js');

完整命名空间导入

import * as utils from '@winner-fed/cloud-utils';

// 使用工具函数
const result = utils.formatDate(new Date(), 'YYYY-MM-DD');
const sum = utils.accAdd(0.1, 0.2);

包结构

本包提供了多种格式以适应不同的使用场景:

@winner-fed/cloud-utils/
├── dist/
│   ├── index.js           # ESM 主入口
│   ├── index.cjs          # CommonJS 主入口
│   ├── index.d.ts         # TypeScript 声明文件
│   ├── *.d.ts             # 独立函数的声明文件
│   ├── esm/               # ESM 格式的独立函数
│   │   ├── accAdd.js
│   │   ├── formatDate.js
│   │   └── ...
│   ├── cjs/               # CommonJS 格式的独立函数
│   │   ├── accAdd.js
│   │   ├── formatDate.js
│   │   └── ...
│   └── umd/               # UMD 格式(浏览器直接使用)
│       └── index.js

在浏览器中使用

<!-- 通过 CDN 引入 UMD 格式 -->
<script src="https://unpkg.com/@winner-fed/cloud-utils/dist/umd/index.js"></script>
<script>
  // 全局变量 cloudUtils
  const result = cloudUtils.formatDate(new Date(), 'YYYY-MM-DD');
  const sum = cloudUtils.accAdd(0.1, 0.2);
</script>

性能对比

不同的导入方式适用于不同的使用场景:

导入方式 包体积 适用场景 示例
完整引入 ~94KB 使用多个函数时推荐 import { a, b, c } from '@winner-fed/cloud-utils'
独立函数导入 ~1-3KB/函数 只使用少数函数时 import { accAdd } from '@winner-fed/cloud-utils/accAdd'
直接路径导入 ~1-3KB/函数 明确指定格式时 import { accAdd } from '@winner-fed/cloud-utils/dist/esm/accAdd.js'

选择建议

  • 🚀 使用 3 个以上函数:推荐完整引入
  • 只使用 1-2 个函数:推荐独立函数导入
  • 🎯 对包体积非常敏感:使用独立函数导入
  • 🛠️ 需要特定格式:使用直接路径导入

功能分类

日期处理

  • formatDate: 日期格式化
  • formatDateToTimeStamp: 日期转时间戳
  • getMonthOfDay: 获取月份天数
  • getYearOfDay: 获取年份天数
  • isLeapYear: 判断是否为闰年

数学计算

  • accAdd: 精确加法
  • preZeroFill: 数字前补零
  • toNonExponential: 数字转非科学计数法
  • formatNumber: 数字格式化

类型判断

  • is: 类型判断工具集
  • isEmpty: 判断是否为空
  • isEmptyObject: 判断是否为空对象
  • isValidDate: 判断是否为有效日期
  • isDigit: 判断是否为数字
  • isLetters: 判断是否为字母
  • isHTML: 判断是否为 HTML 字符串

字符串处理

  • trim: 去除空格
  • toZhCN: 转中文数字
  • numberToChinese: 数字转中文
  • toCamelCaseVar: 转驼峰变量
  • toUnderlineVar: 转下划线变量
  • transferHumpUnderline: 驼峰下划线互转

DOM 操作

  • addClass: 添加类名
  • removeClass: 移除类名
  • scrollToTop: 滚动到顶部
  • getScrollPos: 获取滚动位置
  • insertAtCaret: 在光标处插入内容
  • getPixelRatio: 获取设备像素比

工具函数

  • deepClone: 深拷贝
  • deepMapKeys: 深度映射键名
  • promisify: Promise 化
  • timeTaken: 计算执行时间
  • anagrams: 生成字符串的所有排列组合
  • generateGUID: 生成唯一标识符
  • combineURLs: URL 组合
  • equals: 深度比较两个值是否相等

数据处理

  • merge: 对象合并
  • only: 对象过滤
  • size: 获取对象大小
  • dig: 深度获取对象属性
  • objectToPairs: 对象转键值对数组
  • objectFromPairs: 键值对数组转对象
  • mapKeys: 映射对象键名
  • mapValues: 映射对象值

文件处理

  • photoCompress: 图片压缩
  • exportXls: 导出 Excel
  • prettyBytes: 格式化文件大小
  • dynamicLoadScript: 动态加载脚本

设备检测

  • getDevice: 获取设备信息
  • isMobile: 判断是否为移动设备
  • isMobileStrict: 严格判断是否为移动设备
  • isMobileLoose: 宽松判断是否为移动设备
  • isPhoneX: 判断是否为 iPhone X
  • isLightOS: 判断是否为轻量级操作系统

验证工具

  • isValidEmail: 验证邮箱
  • isValidPassword: 验证密码
  • isValidTelephone: 验证电话号码
  • isValidChineseName: 验证中文姓名
  • isValidEnglishName: 验证英文姓名
  • isValidBankNo: 验证银行卡号
  • isValidIPV4: 验证 IPv4 地址
  • isValidIPV6: 验证 IPv6 地址
  • isValidURI: 验证 URI
  • isValidBase64Format: 验证 Base64 格式
  • isValidMD5: 验证 MD5 格式
  • isValidSemverVersion: 验证语义化版本号
  • isValidSubnetMask: 验证子网掩码
  • isValidTestScores: 验证考试成绩
  • isValidZipcode: 验证邮政编码
  • isValidWechatID: 验证微信号
  • isValidQQ: 验证 QQ 号
  • isValidPassport: 验证护照号
  • isValidLicenseNo: 验证车牌号
  • isValidNewEnergyLicenseNo: 验证新能源车牌号
  • isValidUnifiedSocialCreditCode: 验证统一社会信用代码
  • isValidAShareCode: 验证 A 股代码

URL 处理

  • urlJoin: URL 拼接
  • getURLParameters: 获取 URL 参数
  • getLocationSearchParam: 获取 URL 搜索参数
  • getLocationHrefParam: 获取 URL 哈希参数
  • getUrlNames: 获取 URL 路径名

其他工具

  • cookie: Cookie 操作
  • encrypt: 加密工具
  • getRandomInt: 获取随机整数
  • handleEmoji: 处理表情符号
  • isEmoji: 判断是否为表情符号
  • isSpecialChar: 判断是否为特殊字符
  • rgbToHex: RGB 转十六进制
  • setDocumentTitle: 设置文档标题

开发

# 安装依赖
pnpm install

# 开发模式
pnpm dev

# 构建
pnpm build

# 测试
pnpm test

# 文档开发
pnpm docs:dev

# 文档构建
pnpm docs:build

贡献

欢迎提交 Issue 和 Pull Request。

许可证

MIT

About

常用的工具方法

Topics

Resources

Security policy

Stars

Watchers

Forks

Packages

No packages published

Contributors 6

Morty Proxy This is a proxified and sanitized view of the page, visit original site.