大家好,我是「前端实验室」
爱分享的了不起~
今天给大家分享下前端常用到的基础工具类。注意,了不起说的是基础工具类库,就是处理对象、数组、集合这类数据的基础工具库!
有了这些基础的工具类,再也不用日复一日的头疼怎么复杂数据了!以下这些轮子够用啦!
Lodash 是一个一致性、模块化、高性能的 JavaScript 实用工具库。
大名鼎鼎的 Lodash
就不用过多说了,记住它的官方地址就好。
https://www.lodashjs.com/
xijs
是一个面向复杂业务场景的javascript工具库,包含了业务开发中常用的:
大家可能对复杂场景不太明白,截图给大家看下。
了不起记得,最开始写前端那会儿,”获取当前运行环境,返回运行环境的判断“逻辑是要自己一行一行的码出来的!已经记不清那时调试过多少遍才跑通的了!
记住它的地址,需要的时候真的很管用!
GitHub地址 https://github.com/MrXujiang/xijs 文档地址 http://h5.dooring.cn/xijs
Ramda.js
是一款基于柯里化的工具库,可以用于处理集合、数组、对象等数据。比如常见的map,filter, forEach,find等。
这是一个很重要的库,提供了许多有用的方法,每个 JavaScript 程序员都应该掌握这个工具!
https://ramda.cn/
Day.js
是一个极简的JavaScript库,可以为现代浏览器解析、验证、操作和显示日期和时间。
Day.js
和 Moment.js 的 API 设计保持完全一样。只要会Moment.js
,上手难度几乎为零,而且体积只有 2kb,绝对轻量!
https://dayjs.fenxianglu.cn/
一个小型,快速的 JavaScript 库,用于任意精度的十进制算术运算!
只要与JavaScript数字运算相关,直接用它就好--数字运算必备库!
https://github.com/MikeMcl/big.js
qs
是npm的一个库,一个 url 参数转化 (parse 和 stringify)的轻量级 js 库。
用过axios
的小伙伴,应该比较熟悉。
qs
里面的 stringify()
方法可以将一个json对象直接转为以?和&符连接的形式。
qs.parse()
将URL解析成对象的形式
const Qs = require('qs');
let url = 'method=query_sql_dataset_data&projectId=85&appToken=7d22e38e-5717-11e7-907b-a6006ad3dba0';
Qs.parse(url);
console.log(Qs.parse(url));
qs.stringify()
将对象序列化成URL的形式,以&进行拼接
const Qs = require('qs');
let obj= {
method: "query_sql_dataset_data",
projectId: "85",
appToken: "7d22e38e-5717-11e7-907b-a6006ad3dba0",
datasetId: " 12564701"
};
Qs.parse(url);
console.log(Qs.parse(url));
qs
在前后端接口交互中非常好用。而且这个库是axios
包含的,无效单独下载,直接上手就好!
https://github.com/ljharb/qs
Decimal.js
是一个支持JavaScript浮点运算的高精度类型,可以避免舍入规则带来的精度问题。
前面我们说来Big.js
已经可以用来处理精度问题了,这里为什么要再提Decimal.js
呢?
因为big.js
的精度采用小数位, NAN
或者 Infinity
视为不合法值,且它不能处理除了十进制以外的其它进制。这在常用的运算中是🆗的!但一旦涉及到非常小或者非常大的数值时,还是得考虑Decimal.js
。
Decimal.js
支持NaN
和Infinity
,支持非整数次幂,exp,ln,log,以及三角函数等。它精度采用有效数字,所有操作均采取精度,还支持二进制,八进制,十六进制,二进制指数符号等。
Decimal.js
非常的强大,对应的包体积也大😂 因此,当发现Big.js
搞不定的时候,再祭出Decimal.js
吧!
https://github.com/MikeMcl/decimal.js