yidash(易大师)一万个JavaScript实用方法库
警告⚠️
:未发布 v2.0.0 之前,均为不稳定版本,慎用!!!
🏠 官网
文档官网 https://yidash.yicode.tech
🛖 仓库
github https://github.com/chenbimo/yidash
🧊 安装
npm install yidash
# 或
pnpm add yidash
🍼 使用
注意⚠️
:本项目暂时只提供 ESM
包。
import { yd_number_validNumber, yd_regexp_trainNumber, yd_tree_array2Tree } from 'yidash';
console.dir(
yd_tree_array2Tree([
{ id: 1, pid: 0 },
{ id: 2, pid: 1 },
{ id: 3, pid: 2 }
])
);
console.dir(yd_regexp_trainNumber);
const validNumber = yd_number_validNumber();
console.log(validNumber(1.111)); // 1.11
console.log(validNumber(1.571333)); // 1.57
console.log(validNumber('1..221333')); // 1.22
console.log(validNumber('1.2213.33')); // 1.22
console.log(validNumber('1.')); // 1.
console.log(validNumber('1.2')); // 1.20
console.log(validNumber('1.2.')); // 1.20
🎁 贡献和福利
贡献者交流群
加笔者微信 chensuiyime
,注明 yidash
,拉你进微信交流群。
群内将解答关于代码贡献相关的问题。
代码贡献步骤
- 访问本仓库。
- fork本仓库main分支。
- 拉取fork后的仓库。
- 修改代码。
- push代码到fork后的仓库。
- 发起pull request。
- 等待笔者验证与合并。
注意:只提交lib中的函数到本仓库合并即可,其他文件不要提交。
开发守则
- 必须写
JSDoc注释
,不然别人看不懂,不知道怎么用。 - 必须写
函数作者
,标签为@author
,如@author chensuiyi
。 - 必须写
函数别名
,标签为@alias
,如@alias yd_is_array
。 - 必须写
案例说明
,标签为@example
,如@example yd_is_array([1,2,3])
。 - 必须写
测试用例
,在test目录
下,与lib目录
中的结构一一对应。 - 必须
4格缩进
,不喜欢的请不要参与本项目。 - 必须按
提交主题:提交描述
写清楚提交信息。 - 必须
一个函数一个文件
,不能多个导出函数写到一个文件中。 - 所有
import
导入,除第三方包和内置模块外,其他必须写上文件扩展名。 - 函数名称必须清楚地表达函数作用,不用晦涩难懂的单词。
- 函数必须使用
default
默认导出,且导出的必须是一个箭头函数
。 - 能用
const
定义的地方尽量用const
。 - 不能使用
var
定义变量。 不要炫技
,用尽量简单易懂的方式,宁愿多写几行,也不要增加理解难度。es-toolkit
和lodash
已经存在的函数不要重复实现。只有几行代码
的函数不要添加进来。- 尽量不要函数引入函数,每个函数尽量独立,不依赖其他函数。
- 除导出函数外,其余函数不能使用多行注释,只能使用单行注释。
- 一个工具函数的代码行数不超过500行(
特殊情况例外
)。 - 代码风格以笔者规范为准(会进行沟通),不能擅自修改代码规范。
- 笔者会对所有提交的代码进行审核,并根据情况增删代码。
- 如若本项目产生收益,仓库所有者(陈随易)拥有对收益的完全支配权。
- 如果提交代码,便视为同意以上守则,请查阅并确认后参与。
函数开发说明
目前用到的依赖如下:
- lodash-es
- es-toolkit
- date-fns
因为es-toolkit还在开发中,所以部分函数用lodash-es中的。
最终目标是所有基础函数都用es-toolkit中的。
lib
目录下,每一个目录是一个函数类型集合。
每个目录下,不能再创建目录,只能创建函数文件。
函数名称尽量简短且清楚地表达函数的作用。
对外导出的函数名称 = 前缀 + 目录 + 函数。
比如 lib/is/array.js
函数,则其对外导出的函数名称是 yd_is_array
。
这个函数名称会自动生成,不要手动书写。
函数的JSDoc示例:
@author
@category
@alias
@example
是必备标签。
@alias
标签必须写函数的导出全名,不然在文档中会有显示问题。
标签顺序已添加eslint规则,会自动进行排序。
/**
* 计算剩余时间
* @author 陈随易 <https://chensuiyi.me>
* @category 日期时间
* @alias yd_datetime_leftTime
* @param {number} seconds 剩余时间秒数
* @returns {object} 返回剩余时间的不同单位值
* @summary 这个函数用来根据传入的时间,来计算该时间到当前时间还有多少年、多少月、多少天、等等。
* @example
* yd_datetime_leftTime(10000);
* 结果:{
* years: 0,
* months: 0,
* weeks: 0,
* days: 0,
* hours: 2,
* minutes: 166,
* seconds: 10000,
* text: '2 小时',
* type: '还剩'
* }
*/
git提交格式
能够明确表达提交的内容就行
举例:
- yd_is_number函数增加判断机制
- yd_number_thousands重新设计
- 增加yd_is_array函数
贡献者福利
- 增加开源参与度。
- 体会开源的乐趣。
- 为自己的职业经历增加一个彩蛋。
- 你的函数将会被每一个使用yidash的人看到。
- 额外获得VSCode扩展fnMap永久注册码一枚。
fnMap地址:https://marketplace.visualstudio.com/items?itemName=chensuiyi.fn-map
。
- 每个注册用户可以免费领取一个永久注册码(登录自动领取)。
- 每个贡献者可以额外领取一个(私聊我即可)。