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 🙏

© 2024 – Pkg Stats / Ryan Hefner

@yujinjin/utils

v0.0.3

Published

typescript utils

Downloads

2

Readme

utils

前端常用工具包

1.安装

npm install --save @yujinjin/utils

2.导入

import { guid, randomId, stringFormat, ... } from "@yujinjin/utils";

3.项目脚本命令

打包命令

// vt:版本,默认值为:patch(值为:版本号、‘major’、‘minor’、‘patch’,可选)
npm run build --vt=1.0.1

发布命令

// vt:版本,默认值为:patch(版本号、‘major’、‘minor’、‘patch’,可选)
npm run publish --vt=patch

单元测试 UI

npm run test

单元测试覆盖

npm run test:coverage

eslint

npm run lint

4.代码提交规范

  1. 提交类型:["feat", "ui", "fix", "docs", "style", "refactor", "build", "ci", "perf", "chore", "revert", "test"],且必须使用小写
  2. header 内容的最大长度为 72
  3. subject 内容不能为空,最小长度为 1
// 示例
feat: 增加其他常用工具类方法-number2text

5.utils 方法说明

5.1 extend

对象深复制,创建对象和继承

示例:

// 深复制
extend(true, { a: 1 }, { b: 1 });

// 浅复制
extend({ a: 1 }, { b: 1 }, { c: 1 });

5.2 format

常用格式化方法

5.2.1 dateFormat

日期格式化

示例:

// 默认日期格式化 返回yyyy-MM-DD格式
dateFormat(new Date());

// 指定日期格式化
dateFormat("2023-07-10T09:35:06.000+0000", "yyyy-MM-DD HH:mm:ss");
5.2.2 timeDifferenceFormat

日期时间段显示格式化,60 秒以内: 刚刚之前、1 小时以内:mm 分钟前、24 小时以内:hh 小时前、1-30 天:dd 天前、30 天以上:mm/dd、如果 30 天以上,并且跨年:yyyy/mm/dd

示例:

timeDifferenceFormat(new Date().getTime() - 10 * 1000); // 返回:刚刚之前

timeDifferenceFormat(new Date().getTime() - 40 * 24 * 60 * 60 * 1000); // 返回:MM/DD
5.2.3 numberFormat

将数值格式化,并四舍五入

示例:

numberFormat("1,234,567.45"); // 返回:1,234,567

numberFormat(1234567.45, 1); // 返回:1,234,567.5
5.2.4 stringFormat

字符串内容格式化

示例:

stringFormat("我是{0},今年{1}了", ["JACK", 12]); // 我是JACK,今年12了

numberFormat("我是{name},今年{age}了", { name: "JACK", age: 12 }); // 我是JACK,今年12了

5.3 generate

动态生成数据

5.3.1 guid

生成 32 的字符串,每一位都是随机的 16 进制数,重复的概率是 1/(16^32)

示例:

guid(); // 返回长度为32的字符串,比如:948600CA-9357-4518-9AA7-649BC5DAD19C
5.3.2 randomId

生成 id 随机数(年月日+8 位随机数)

示例:

randomId(); // 返回随机数,比如:20230918df822cba

5.4 url

URL 常用方法

5.4.1 changeUrlParameter

修改 url 中的参数值,如果参数名(name)在 URL 中不存在且有 value 值就表示增加该参数,如果 value 为 null 或者空字符串就表示删除该参数

示例:

// 修改URL中的name参数值,当前没有name参数会自动添加
changeUrlParameter("http://wwww.xxx.com", "name", "test2"); // 返回:http://wwww.xxx.com?name=test2

// 删除URL中的name参数
changeUrlParameter("http://wwww.xxx.com?name=test1", "name"); // 返回:http://wwww.xxx.com
5.4.2 parseUrl

解析 URL 的参数、域名、协议、端口等对象

示例:

// 修改URL中的name参数值,当前没有name参数会自动添加
parseUrl("http://wwww.xxx.com"); // 返回:{ sources, query, params, file, hash, host, ... }

5.5 validation

常用验证类方法

5.5.1 chinaPhoneNumberValidate

中国手机号码验证

示例:

chinaPhoneNumberValidate("13743244312"); // 返回:true
5.5.2 emailValidate

验证邮箱

示例:

emailValidate("[email protected]"); // 返回:true
5.5.3 chinaIDCardValidate

中国身份证验证(支持香港、澳门、台湾)

示例:

// 大陆身份证
chinaIDCardValidate("130701199310302288"); // 返回:true

// 香港身份证
chinaIDCardValidate("B123456(F)"); // 返回:true

// 台湾身份证
chinaIDCardValidate("C123456789"); // 返回:true

// 澳门身份证
chinaIDCardValidate("5123456(1)"); // 返回:true
5.5.4 validateBankCard

验证银行卡,验证规则是:全数字,10 到 30 位, 覆盖对公/私账户, 参考微信支付

示例:

validateBankCard("321342131"); // 返回:true
5.5.5 validateName

验证姓名,验证规则是:全中文,或者中文之间有(·),或者全英文

示例:

validateName("测试"); // 返回:true

validateName("艾格里·买买提"); // 返回:true

validateName("jack yu"); // 返回:true

validateName("测 试"); // 返回:false

validateName("测试J"); // 返回:false

validateName("J"); // 返回:false
5.5.6 validateChineseCharacter

全汉文验证,和 validateName 的区别就在于支持新加的汉字识别

示例:

validateChineseCharacter("测试"); // 返回:true

validateChineseCharacter("测试䳸鿏"); // 返回:true

validateChineseCharacter("测?试"); // 返回:false

validateChineseCharacter("测𝒳试"); // 返回:false

validateChineseCharacter("测试jackyu"); // 返回:false
5.5.7 validatePassword

验证密码格式,验证规则是:密码内容长度 8-20 位,且必须是数字、小写字母、大写字母、特殊字符这四种组合

示例:

validatePassword("1W2D8^yu123edc"); // 返回:true
5.5.8 validateSocialCreditCode

验证统一社会信用代码,验证规则是:统一代码由十八位的阿拉伯数字或大写英文字母(不使用 I、O、Z、S、V)组成;第 1 位登记管理部门代码;第 2 位机构类别代码;第 3 位~第 8 位登记管理机关行政区划码;第 9 位~第 17 位主体标识码(组织机构代码);第 18 位校验码

示例:

validateSocialCreditCode("91350100M000100Y43"); // 返回:true
5.5.9 validateSimpleSocialCreditCode

统一社会信用代码(宽松匹配)(15 位/18 位/20 位数字/大小写字母)

示例:

validateSimpleSocialCreditCode("91350100M000100"); // 返回:true

5.6 others

其他常用工具类方法

5.6.1 loadScript

页面动态加载 JS 文件,如果超过 10S 文件还未加载表示超时

示例:

await loadScript("https://res.wx.qq.com/open/js/jweixin-1.4.0.js", "jweixin"); // 返回true
5.6.2 throttle

函数节流,提升性能,用于操作函数节流,节流就间隔时间段 时间内执行一次,也就是降低频率,将高频操作优化成低频操作。

示例:

const cb = throttle(function (e) {
    console.info("eventListener", e);
}, 250);

window.addEventListener("scroll", cb, false);
5.6.3 debounce

函数防抖

示例:

const ajax = function (e) {
    console.info("debounce runner", e);
};

const cb = debounce(ajax, 1000);

input.addEventListener("keyup", function (e) {
    cb(e);
});
5.6.4 number2text

数字转中文数码

示例:

number2text(100000000); // 返回 "壹亿元整"
5.6.5 setObjectProperty

设置 object 对象中对应 path 属性路径上的值,如果 path 不存在,则创建。 缺少的索引属性会创建为数组,而缺少的属性会创建为对象。

示例:

const obj = { a: 1, b: 2 };

setObjectProperty(obj, "c.0.f", 3); // obj 的值为:{a: 1, b: 2, c: [{f: 3}]}

setObjectProperty(obj, ["a", 0, "c"], 3); // obj 的值为:{a: [{c: 3}], b: 2}
5.6.6 getObjectProperty

根据 object 对象的 path 路径获取值。 如果解析 value 是 undefined 会以 defaultValue 取代。

示例:

const obj = { a: [{ c: 1 }], b: 2 };

getObjectProperty(obj, "a[0].c", 3); // 返回:1

setObjectProperty(obj, ["a", 0, "f"], 3); // 返回:3