大家好,我是CUGGZ,周末愉快!今天分享一些常用的前端数据处理工具库,助力高效开发!一、工具库(一)LodashLodash是一个JavaScript工具库,具有一致性、模块化、高性能、提高开发者效率的特点。Lodash使JavaScript更容易处理数组、数字、对象、字符串等。Lodash的模块化方法非常适合:遍历数组、对象和字符串;操纵和检查值;创建符合功能的功能。Github:https://github.com/lodash/lodash(2)Underscore.jsUnderscore.js是一个实用的JavaScript工具库,它提供了一套函数式编程的实用函数,但不扩展任何JavaScript内置对象,而就是将数据封装在一个自定义的对象中。Github:https://github.com/jashkenas/underscore(3)RamdaRamda专为函数式编程风格而设计,可以更轻松地创建函数式管道并且永远不会更改用户的现有数据。Ramda的主要特点如下:Ramda强调更纯粹的函数式风格。数据不变性和无副作用的函数是其核心设计理念。这有助于您使用干净、优雅的代码完成工作。Ramda函数本身是自动柯里化的。这使您可以轻松地基于现有函数创建新函数,同时仅提供部分参数。Ramda函数参数的排列顺序更便于柯里化。要操作的数据通常在最后。Github:https://github.com/ramda/ramda(4)Collect.jscollect.js是一个方便且无依赖的JavaScript处理数组和对象的包装器工具。提供常用的数组和集合操作API,map、reduce、filter等集合的高级方法,设计灵感来源于LaravelCollection。Github:https://github.com/ecrmnn/collect.js/2。Date(1)date-fnsdate-fns是一个现代JavaScript日期工具库,提供了最全面、最简单和一致的工具集,用于在浏览器和Node.js中操作JavaScript日期。它具有以下特点:模块化:根据需求选择需要引用的模块不可变:date-fns使用纯函数构建,总是返回一个新的日期实例,而不是改变传递的日期实例。它允许防止错误并跳过长时间的调试会话Trusty:语义版本控制,始终向后兼容Fast:轻量级和快速,提供最佳用户体验'date-fns'format(newDate(),"'Todayisa'eeee")//=>"TodayisaSaturday"formatDistance(subDays(newDate(),3),newDate(),{addSuffix:true})//=>“3天前”formatRelative(subDays(newDate(),3),newDate())//=>“上周五晚上7点26分。”Github:https://github.com/date-fns/date-fns(2)Moment.jsMoment.js是一个简单易用的轻量级JavaScript日期处理库,提供日期格式化、解析、校验等功能。它支持在浏览器和NodeJS环境中运行。这类库可以将给定的任意日期转换成多种不同的格式,具有强大的日期计算功能,还内置了可以显示各种日期形式的函数。Github:https://github.com/moment/moment/(3)Day.jsDay.js是一个极简主义的JavaScript库,可以为现代浏览器解析、验证、操作和显示日期和时间。它具有以下特点:与Moment.js相同的API和用法不可变数据(Immutable)支持链式操作(Chainable)国际化I18n只有2kb微库完全浏览器兼容性dayjs().format();//2020-09-08T13:42:32+08:00dayjs().format('YYYY-MM-DD');//2020-09-08dayjs().format('YYYY-MM-DDHH:mm:ss');//2020-09-0813:47:12dayjs(1318781876406).format('YYYY-MM-DDHH:mm:ss');//2011-10-1700Github:https://github.com/iamkun/dayjs/3.随机值(1)Chance.jsChance是一个轻量级的JavaScript随机字符串生成器插件,可以帮助减少单调的代码编写,尤其是在编写经常需要各种随机内容的自动化测试时。您可以使用它来生成随机数、字符、字符串、名称、地址、骰子等等。Github:https://github.com/chancejs/chancejs(2)UUIDUUID是一个实用程序库,用于在JavaScript中生成符合RFC标准的UUID。它具有以下特点:完备:支持RFC4122version1,3,4and5UUID跨平台:支持CommonJS、ECMAScript模块和CDN构建;节点12、14、16、18;Chrome、Safari、Firefox、Edge浏览器;webpack和rollup.js模块打包工具;安全性:具有高加密强度的随机值体积小:零依赖,占用空间小CLI:包含uuid命令行实用程序Github:https://github.com/uuidjs/uuid(3)NanoIDnanoid是一个小型、安全的URL-友好、独特的JavaScript字符串ID生成器。它具有以下特性:小。130字节(压缩和gzip压缩)。没有依赖性。大小限制控制大小。快速地。它比UUID快60%。安全的。它使用密码学上强大的随机API。可以集群使用。袖珍的。它使用比UUID(A-Za-z0-9_-)更大的字母表。因此,ID大小从36个符号减少到21个符号。使用方便。NanoID已移植到20种编程语言。import{nanoid}from'nanoid'model.id=nanoid()//=>"V1StGXR8_Z5jdHi6B-myT"Github:https://github.com/ai/nanoid4.Number(1)Math.jsMath.js是一个强大的JavaScript和Node.js的数学库。具有灵活的表达式解析器,支持符号求值,内置大量函数和常量,提供处理不同数据类型的集成解决方案,如数字、大数、复数、分数、单位和矩阵.功能强大且易于使用。Github:https://github.com/josdejong/mathjs(2)Numeral.jsNumeral.js是一个用于操作和格式化数值的JS库。数字可以格式化为货币、百分比、时间,甚至序数的缩写(例如1st、100th)。Github:https://github.com/adamwdraper/Numeral-js(3)Accounting.jsAccounting.js是一个用于数字、货币和货币解析/格式化的小型JavaScript库。它是轻量级的,完全可本地化的,没有依赖性,并且在客户端或服务器端工作得很好。使用独立或作为nodeJS/npm和AMD/requireJS模块。//默认用法:accounting.formatMoney(12345678);//$12,345,678.00//欧洲格式(自定义符号和分隔符),也可以使用选项对象作为第二个参数:accounting.formatMoney(4999.99,"",2,".",",");//4.999,99//负值可以很好地格式化:accounting.formatMoney(-500000,"£",0);//£-500,000//简单的`format`字符串允许控制符号位置(%v=值,%s=符号):accounting.formatMoney(5318008,{symbol:"GBP",format:"%v%s"});//5,318,008.00Github:https://github.com/openexchangerates/accounting.js5。String(1)qsqs是一个用于url参数转换(parse和stringify)的JavaScript库。格式化字符串可以转换为对象格式。varqs=require('qs');varassert=require('assert');varobj=qs.parse('a=c');assert.deepEqual(obj,{a:'c'});varstr=qs.stringify(obj);assert.equal(str,'a=c');Github:https://github.com/ljharb/qs(2)VocaVoca是一个用于操作字符串的JavaScript库。Voca库提供了使字符串操作更舒适的有用函数:更改大小写、修剪、填充、slugify、拉丁化、sprintfy、截断、转义等。模块化设计允许加载整个库或单个功能,以最大限度地减少应用程序构建。该库经过全面测试,有据可查,并得到长期支持。v.camelCase('birdflight');//=>'birdFlight'v.sprintf('%scosts$%.2f','Tea',1.5);//=>'Teacosts$1.50'v.slugify('Whatawonderfulworld');//=>'what-a-wonderful-world'Github:https://github.com/panzerdp/voca6。Cookie(1)js-cookie.jsjs-cookie.js是一个简单、轻量级的JavaScriptAPI,用于处理浏览器cookie。它具有以下特性:适用于所有浏览器接受任何字符经过广泛测试无依赖性受支持的ES模块符合AMD/CommonJSRFC6265标准有用的wiki启用自定义编码/解码<800字节压缩!Github:https://github.com/js-cookie/js-cookie(2)CookiesCookies是一个用于获取和设置HTTP(S)cookie的node.js模块。它具有以下特点:允许使用Keygrip对cookie进行签名以防止篡改;延迟验证cookie以降低成本;不允许通过不安全的套接字发送安全cookie;默认情况下,所有cookie都是HTTP-only,并且通过SSL发送的Cookie是安全的;允许其他库在不知道签名机制的情况下访问cookie。varhttp=require('http')varCookies=require('cookies')//可选地定义密钥来签署cookie值//以防止客户端篡改varkeys=['keyboardcat']varserver=http.createServer(function(req,res){//创建一个cookies对象varcookies=newCookies(req,res,{keys:keys})//获取一个cookievarlastVisit=cookies.get('LastVisit',{signed:true})//给cookie设置一个值cookies.set('LastVisit',newDate().toISOString(),{signed:true})if(!lastVisit){res.setHeader('Content-Type','text/plain')res.end('Welcome,firsttimevisitor!')}else{res.setHeader('Content-Type','text/plain')res.end('欢迎回来!自上次访问以来没有太大变化at'+lastVisit+'.')}})server.listen(3000,function(){console.log('访问我们http://127.0.0.1:3000/!')})GitHub:https://github.com/pillarjs/cookies7。安全性(一)DOMPurifyDOMPurify是一款开源的基于DOM的快速XSS净化工具。输入HTML元素,然后通过DOM解析递归元素节点,进行净化,输出安全的HTML。Github:https://github.com/cure53/DOMPurify
