yidash(易大师)一万个JavaScript实用方法库

警告⚠️:未发布 v2.0.0 之前,均为不稳定版本,慎用!!!

logo

🏠 官网

文档官网 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 ,拉你进微信交流群。

群内将解答关于代码贡献相关的问题。

代码贡献步骤

  1. 访问本仓库。
  2. fork本仓库main分支。
  3. 拉取fork后的仓库。
  4. 修改代码。
  5. push代码到fork后的仓库。
  6. 发起pull request。
  7. 等待笔者验证与合并。

注意:只提交lib中的函数到本仓库合并即可,其他文件不要提交。

开发守则

  1. 必须写 JSDoc注释,不然别人看不懂,不知道怎么用。
  2. 必须写 函数作者,标签为 @author,如 @author chensuiyi
  3. 必须写 函数别名,标签为 @alias,如 @alias yd_is_array
  4. 必须写 案例说明,标签为 @example,如 @example yd_is_array([1,2,3])
  5. 必须写 测试用例,在 test目录 下,与 lib目录 中的结构一一对应。
  6. 必须 4格缩进,不喜欢的请不要参与本项目。
  7. 必须按 提交主题:提交描述 写清楚提交信息。
  8. 必须 一个函数一个文件,不能多个导出函数写到一个文件中。
  9. 所有 import 导入,除第三方包和内置模块外,其他必须写上文件扩展名。
  10. 函数名称必须清楚地表达函数作用,不用晦涩难懂的单词。
  11. 函数必须使用 default 默认导出,且导出的必须是一个 箭头函数
  12. 能用 const 定义的地方尽量用 const
  13. 不能使用 var 定义变量。
  14. 不要炫技,用尽量简单易懂的方式,宁愿多写几行,也不要增加理解难度。
  15. es-toolkitlodash 已经存在的函数不要重复实现。
  16. 只有几行代码 的函数不要添加进来。
  17. 尽量不要函数引入函数,每个函数尽量独立,不依赖其他函数。
  18. 除导出函数外,其余函数不能使用多行注释,只能使用单行注释。
  19. 一个工具函数的代码行数不超过500行(特殊情况例外)。
  20. 代码风格以笔者规范为准(会进行沟通),不能擅自修改代码规范。
  21. 笔者会对所有提交的代码进行审核,并根据情况增删代码。
  22. 如若本项目产生收益,仓库所有者(陈随易)拥有对收益的完全支配权。
  23. 如果提交代码,便视为同意以上守则,请查阅并确认后参与。

函数开发说明

目前用到的依赖如下:

  1. lodash-es
  2. es-toolkit
  3. 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函数

贡献者福利

  1. 增加开源参与度。
  2. 体会开源的乐趣。
  3. 为自己的职业经历增加一个彩蛋。
  4. 你的函数将会被每一个使用yidash的人看到。
  5. 额外获得VSCode扩展fnMap永久注册码一枚。

fnMap地址https://marketplace.visualstudio.com/items?itemName=chensuiyi.fn-map

  1. 每个注册用户可以免费领取一个永久注册码(登录自动领取)。
  2. 每个贡献者可以额外领取一个(私聊我即可)。

贡献者