npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

businesstools

v0.0.3-alpha.3

Published

业务工具包

Readme

前端业务工具包

非常实用的业务工具包,让前端开发更简单、迅速~

  • 代码采用Common.js规范编写。
  • 打包按照ES规范,为了有tree-shaking+编辑器智能提示。
  • 支持npm引入与iife浏览器script引入。

~~Tips:大多数方法都是采用ES6+实现。为了文件体积没有经过babel转换,该工具包尽量在高版本浏览器上使用~~。

Tips:V3版本:script引入下,低版本浏览器使用lowerBusinessTools.js(有方法不支持IE8+,也不会支持IE8+)***

使用方式

npm引入方式

npm install businesstools

import {methodName or className} from 'businesstools'

高版本浏览器引入方式

<script src="../dist/businessTools.js"></script>
businessTools.methodName--or className--()

低版本浏览器引入方式

<script src="../dist/lowerBusinessTools.js"></script>
businessTools.methodName--or className--()

版本内容

V1

数组转化为树形结构
/**
 * 数组转化为树形结构
 * @param list 带转换数组
 * @param id id
 * @param pid 关联id
 * @returns {*[]}
 */
const convertListToTree = (List<Object> list, String id = 'id', String  pid = 'pid') => {}
list集合排序、tree结构排序
/**
 * list集合排序、tree结构排序
 * @param list 待处理集合
 * @param sortName 排序字段
 * @param children 递归子元素
 * @param desc 降序
 * @returns {*}
 */
 const sort = (List<Object> list, String sortName = 'sort', String children = 'children',Boolean desc = true) => {}
递归查找节点路径
/**
 * 递归查找节点路径
 * @param tree 待处理集合
 * @param path 路径地址(匹配的节点构成的递归数据)
 * @param callBack 回调函数(主动调用,工具传递当前节点),客户端返回true代表找到节点。
 * @returns {*[]|*}
 */
 const findPath = (List<Object> tree = [],List path = [],Function callBack) => {}
节流
/**
 * 节流
 * @param fn 需要运行的函数
 * @param delay 等待时长
 * @returns {(function(*): void)|*}
 */
const throttle = (Function fn,Integer delay) => {}
防抖
/**
 * 防抖
 * @param fn 需要运行的函数
 * @param delay 等待时长
 * @returns {(function(): void)|*}
 */
 const debounce = (Function fn, Integer delay) => {}
对象拼接到url成最终url
/**
 * 把对象拼接到url中,解析出完整的url字符串。PS:如果url中的参属性在待拼接对象中,拼接对象的属性会替换掉url属性
 * @param url 待拼接url字符串
 * @param obj 待拼接参数对象
 * @returns {`${string}${string}${string}?${string}`}
 */
 const joinObjectToUrl = (String url,Object obj) => {}
对象转化为formData
/**
 * 对象转化为formData
 * @param object 待转换对象
 * @returns {FormData}
 */
 const parseObjectToFormData = (Object object) => {}
转换url参数成对象
/**
 * 转换url参数成对象
 * @param url
 * @returns {{}}
 */
 const parseUrlParamsToObject = (String url) => {}
分片上传
/**
 * 分片上传
 * @param file 文件
 * @param getUploadIdUrl 获取上传id地址 GET请求
 * @param headers 请求头(后续上传与合并都采用这一个请求头,注意做好控制)
 * @param chunkSize 切片大小
 * @param getUploadIdParams 获取上传id额外参数 query参数
 * @param getUploadIdErrorCallback 获取上传id错误处理
 * @param uploadUrl 上传地址(POST请求,formData入参)
 * @param uploadParams 上传请求额外参数,拼接在formData上面
 * @param uploadErrorCallback 上传失败回调
 * @param onProgress 上传进度回调
 * @param mergeUploadUrl 合并地址 POST请求
 * @param mergeUploadParams 合并请求参数  json形式拼接
 * @param mergeUploadErrorCallback 合并请求参数失败回调
 * @param uploadSuccessCallback 上传失败回调
 * @returns {Promise<void>}
 */
 const sliceUpload = async ({
                               MultipartFile file,
                               String getUploadIdUrl,
                               Object headers = {},
                               Long chunkSize = 1024 * 1024 * 3,
                               Object getUploadIdParams = {},
                               Function getUploadIdErrorCallback,
                               String uploadUrl,
                               Object uploadParams = {},
                               Function uploadErrorCallback,
                               Function onProgress,
                               String mergeUploadUrl,
                               Object mergeUploadParams = {},
                               Function mergeUploadErrorCallback,
                               Function uploadSuccessCallback
                           }) => {}

V2

正则表达式Pattern class

| 名称 | 类别 | 描述 | 备注 | | --------------- | ---- | ------------------------- | ---- | | Email | 属性 | 邮箱正则 | | | QQ | 属性 | QQ正则 | | | Phone | 属性 | 手机正则 | | | PositiveInteger | 属性 | 正整数正则 | | | IdCard | 属性 | 身份证号正则(忽略末尾X) | |

验证邮箱
/**
 * 验证邮箱
 * @param str 待验证内容
 * @param emailPattern 正则表达式
 * @returns {boolean}
 */
const verifyEmail = (String str,Pattern emailPattern = Pattern.Email) => {}
验证QQ
/**
 * 验证QQ
 * @param str 待验证内容
 * @param QQPattern 正则表达式
 * @returns {boolean}
 */
const verifyQQ = (String str, Pattern QQPattern = Pattern.QQ) => {}
验证手机号
/**
 * 验证手机号
 * @param str 待验证内容
 * @param phonePattern 正则表达式
 * @returns {boolean}
 */
const verifyPhone = (String str, Pattern phonePattern = Pattern.Phone) => {}
验证正整数
/**
 * 验证正整数
 * @param str 待验证内容
 * @param idNumberPattern 正则表达式
 * @returns {boolean}
 */
const verifyPositiveInteger = (String str,Pattern positiveIntegerPattern = Pattern.PositiveInteger) => {}
验证身份证号
/**
 * 验证身份证号 x结尾的不区分大小写
 * @param str 待验证内容
 * @param idNumberPattern 正则表达式
 * @returns {boolean}
 */
const verifyIdCard = (String str,Pattern idNumberPattern = Pattern.IdCard) => {}
判断是否为空
/**
 * 判断是否为空
 * @param data
 * @returns {boolean}
 */
 const isEmpty = (Object data) => {}
判断是否不为空
/**
 * 判断是否不为空
 * @param data
 * @returns {boolean}
 */
const isNotEmpty = (Object data) => {}
判断是否是数组
/**
 * 判断是否是数组
 * @param data
 * @returns {boolean}
 */
const isArray = (Object data) => {}
Tip:在V1的基础上,更改判断针对树形结构方法入参为isArray方法

v3

list去重
/**
 * list去重
 * @param list 待处理集合
 * @param split 多个字段参与一起去重的时候的分隔符
 * @param args 字段属性-支持传递多个字段,默认按照,拼接一起去重
 * @returns {*[]|*}
 */
const reduceList = (List<Object> list, char split = ',', ...args) => {}
过滤list、tree节点
/**
 * 根据自定义条件过滤list集合或tree结构
 * @param list 待处理集合
 * @param callback 回调函数(主动调用,工具传递当前节点),客户端返回true代表找到节点。
 * @param children 递归节点名称
 * @returns {*[]}
 */
const filter = (List<Object> list,Function callback, String children = 'children') => {}
递归遍历list、tree
/**
 * 根据自定义条件对list每个元素执行一次操作,不会影响原有数据源
 * @param list 待处理集合
 * @param callback 回调函数(主动调用,工具传递当前节点)
 * @param children 递归节点名称
 * @returns {*[]}
 */
const operateList = (List<Object> list,Function callback, String children = 'children') => {}
修复内容:
  1. 修复数组转换树形结构引用导致数据错误问题,支持自定义节点字段

    /**
     * 数组转化为树形结构
     * @param list 带转换数组
     * @param id id
     * @param pid 关联id
     * @param children 递归节点名称
     * @returns {*[]}
     */
    const convertListToTree = (List<Object> list, String id = 'id', String pid = 'pid', String children = 'children') => {}
  2. 修复sort排序缺少参数、引用导致数据错误问题。

  3. 修复递归查找节点路径不好调用问题,新增递归字段。

    /**
     * 递归查找节点路径
     * @param list 待处理集合
     * @param callBack 回调函数(主动调用,工具传递当前节点),客户端返回true代表找到节点。
     * @param children 递归节点名称
     * @returns {*[]|*}
     */
    const findPath = (List<Object> list, Function callback, String children = 'children') => {}
  4. 增加支持IE8+。