软件简介

每个前端开发人都有自己的 utils 库, 这些方法我们高频使用,但又要在每个项目中重写。 bbo 是一款超小且实用的函数工具库,来源于日常开发总结。

项目地址:github.com/tnfe/bbo

文档地址:https://tnfe.github.io/bbo/

使用示例:

// base case
bbo.getCookie('username'); // => 'userName'
bbo.cookie().getJson(); //  => {a: 1, b: 2}
bbo.isiPhone(); // => true or false
bbo.numberFormat(1234.56, 2, ',', ' '); // => '1 234,56';
bbo.split([1, 2, 3, 4, 5], 2); // => [[1,2], [3,4], [5]]
bbo.entries({ c: 8, a: 4 }); // => [['c', 8], ['a', 4]]
bbo.toPath("a.b.c"); // => ['a', 'b', 'c']
bbo.get({ a: { aa: { aaa: 2 } }, b: 4 }, "a.aa.aaa"); // => 2
bbo.union([1, 2, 3], [4, 3, 2]); // => [1, 2, 3, 4]
bbo.intersect([1, 2, 3], [4, 3, 2]); // => [2, 3]
bbo.unionBy([2.1], [1.2, 2.3], Math.floor); // [2.1, 1.2]
bbo.mapValues({ a: 3, b: 5, c: 9 }, (value) => value + 1); //=> {a: 4, b: 6, c: 10}
bbo.compact([0, 1, false, 2, "", 3]); // [1, 2, 3]
bbo.flush({a: 2, b: null, c: 4, d: undefined}); // => {a: 2, c: 4}
bbo.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor); // => [1]
bbo.search("3", { a: 3, b: 5, c: 7 }); // => 'a'
bbo.size({ a: 1, b: 2 }); // => 2

var users = [
  { user: "barney", age: 36, active: true },
  { user: "fred", age: 40, active: false },
];
bbo.find(users, { age: 1, active: true }); // => {"active": true, "age": 36, "user": "barney"}
bbo.findIndex(users, ["active", false]); // => 1

// chain case
var array1 = [1, 2, 3, null];
var array2 = [3, 4, 5, ''];
var object1 = { a: 6, b: 7 };
var object2 = { c: 8, d: 9 };

bbo
  .chain(object1)
  .extend(object2) // => {a: 6, b: 7, c: 8, d: 9}
  .entries() // =>  [["a", 6], ["b", 7], ["c", 8], ["d", 9]]
  .thru((words) => {
    const temp = [];
    bbo.forEach(words, (item, index) => {
      temp.push(item[1]);
    });
    return temp;
  }) // => [6, 7, 8, 9]
  .union(array1) // => [6, 7, 8, 9, 1, 2, 3, null]
  .union(array2) // => [6, 7, 8, 9, 1, 2, 3, null, 4, 5, ""]
  .compact() // => [6, 7, 8, 9, 1, 2, 3, 4, 5]
  .thru((array) => {
    return array.sort();
  }) // => [1, 2, 3, 4, 5, 6, 7, 8, 9]
  .value();
// return  => [1, 2, 3, 4, 5, 6, 7, 8, 9]

... ∞

 

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (17)

加载中
不错
08/05 20:46
回复
举报
根据这个例子里的方法显示其中大部分都与lodash相同,包含了小块只浏览器端逻辑。lodash/ramda之流是设计面向整体JavaScript runtime开发,尤其是lodash底层包含了很多针对语言的性能优化。你的库定位我想更偏向于浏览器端工具函数组成的库, 为了避免与已有的库冲突,一些同名的函数其实没必要存在,作为lodash的补充比较好。
08/05 10:11
回复
举报
风来高兴软件作者
嗯后续会向着差异化去实现。
08/05 10:16
回复
举报
希望能出个时间戳转换的函数,包括11位时间戳的转换,比较,计算等,大多时候都是传递的时间戳。
08/05 10:11
回复
举报
风来高兴软件作者
有一个简单的函数:bbo.formatDuration(34325055574); // => '397 days, 6 hours, 44 minutes, 15 seconds, 574 milliseconds' 业务实际中,日期处理类业务也比较复杂,bbo计划做一些简单的扩展。 如果涉及到国际化等业务场景,可以参看momentjs。
08/05 10:19
回复
举报
基本上你这个库包含我日常使用开发了,非常喜欢这样的风格,我所需要的日期转换函数是这样的 bb.toDate(1588230000) //=> 2020-04-30 15:00
08/05 10:59
回复
举报
https://web-cell.dev/web-utility/globals.html#formatdate
08/05 11:20
回复
举报
多谢,是个高大上的东西,
08/05 22:14
回复
举报
这个挺香的 ,请问有什么办法可以注入到浏览器调试模式(F12)下调用它的功能 ?
08/05 09:55
回复
举报
风来高兴软件作者
浏览器模式下可以直接使用bbo作为全局变量调试。
08/05 10:01
回复
举报
你好,文档打不开。还有别的链接嘛
08/06 09:33
回复
举报
https://github.com/tnfe/bbo/blob/master/dist/bbo.min.js 把这个代码复制粘贴到控制台.
08/05 10:08
回复
举报
风来高兴软件作者
除了jsDelivr和UNPKG,国内有cdn:https://mat1.gtimg.com/www/js/libs/bbo.min.js
08/05 10:14
回复
举报
08/05 11:37
回复
举报
MrD
lodash更香
08/05 08:32
回复
举报
这个和 lodash 比, 有没有什么更好的地方?
08/05 08:25
回复
举报
风来高兴软件作者
里面有lodash(mlodash)同名函数的实现,逻辑精简,在相同的场景下,更利于对函数本身的扩展。
08/05 10:04
回复
举报
更多评论
暂无内容
发表于大前端专区
2014/04/17 23:21

12个漂亮颜色搭配的国外网站欣赏

确定一个网页设计的颜色搭配是设计过程中最重要的部分,也是最困难的一部分。通常企业品牌在推广时采用什么颜色的影响会比较大。因为要为网站的访客定下的基调和情绪主要是由网站的颜色决定的。 在这篇文章中,我们介绍一些颜色搭配用的比较好的国外企业网站,为你在实际设计项目提供参考与启发。

0
0
发表了博客
2019/07/29 17:41

HTML的标签简单概括

段落标签 <p></p> 属性 说明 值 align 对其方式 left(默认)、right、center 水平线 <hr /> 属性 说明 值 width 长度 px % align 对齐方式 left、center(默认)、right size 粗细 px color 颜色 red、#f00 超链接a 属性 说明 值 href 地址 url(文件、网页地址) target 打开方式 _self(默认)、_blank、_top 图像标签 img ...

0
0
发表于服务端专区
2017/08/21 17:17

股票行情和数字货币交易所名词含义

GTC IOC FOK L2 market BBO 市价单有效期 GTC IOC FOK GoodTillCancel (GTC) 此订单将被放置在委托队列中并在取消订单之前一直保持有效。 交易者会使用GTC方式,来期待全部合约在指定的价格成交。同时,交易者也可...

0
0
发表了博客
01/08 13:39

Transaction rolled back because it has been marked as rollback-only

spring的声明事务提供了强大功能,让我们把业务关注和非业务关注的东西又分离开了。好东西的使用,总是需要有代价的。使用声明事务的时候,一个不小心经常会碰到“Transaction rolled back because it has been m...

0
0
发表了博客
2019/07/17 08:42

【零基础】量子纠缠图像问世,简单解读实验原理

量子纠缠图像问世   量子纠缠是量子力学领域的基本现象之一,指两个粒子相互作用并瞬间共享其物理状态。所谓“量子纠缠”,是指一对粒子属性完全相反,如一个粒子自旋向上,则另一个自旋向下,并且当一个粒子的属性改变时,另一个粒子无论距离多远,都会立即变成相反的属性。最近英国物理学家通过一套特殊的“相机”首...

0
0
发表于大前端专区
06/09 22:23

go 的一个orm generator,生成kpoh

用于生成Go的Model文件,数据库操作太过于麻烦,依靠工具可以直接生成model对象,默认使用的是xorm映射。 需要支持Go mod ,所以版本最好1.11以上 下载: go get -u github.com/anthony-dong/orm-generator 执行 ...

0
0
发表了博客
10/21 10:50

为什么我怎么也理解不了波粒二象性,是因为智商不够吗?

来源:数学中国 也许大家不知道,著名的薛定谔的猫思想实验,薛定谔提出它的初衷并不是帮助大家理解量子力学,而恰恰是由于他无法接受量子理论里面诡异的“世界观”,提出这个思想实验的目的是告诉大家量子力学有多荒谬,所以他决定放弃。Well,从薛定谔到现在,发生了很多事。一些实验和理论的完善,让量子理论的说服力...

0
0
09/12 12:00

MATLAB数学建模教学(三) | 史上最强的MATLAB学习网站,你需要的这里统统都有!!!

重要的推文发三遍!!! 各位小伙伴可点击左下角阅读原文,即可进入到优化算法交流地官方账号主页(推荐),谨防上当受骗。 hello,大家好!这几天是全国大学生数学建模竞赛的比赛时间,首先预祝各位参赛的同学能...

0
0
发表于软件架构专区
09/11 22:24

MATLAB数学建模教学(三) | 史上最强的MATLAB学习网站,你需要的这里统统都有?

各位小伙伴可点击左下角阅读原文,即可进入到优化算法交流地官方账号主页(推荐),谨防上当受骗。 hello,大家好!这几天是全国大学生数学建模竞赛的比赛时间,首先预祝各位参赛的同学能够取得好成绩。今天,网上...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
暂无内容
17 评论
64 收藏
分享
返回顶部
顶部