2018 年你需要知道的 11 个 JavaScript 库

译者按:你可能已经用到Underscore或者Lodash。本文列举了11个常用的库来提高开发效率。


为了保证可读性,本文采用意译而非直译。另外,本文版权归原作者所有,翻译仅用于学习。


JavaScript依然是2018年最受欢迎、最流行的编程语言,所以它的生态系统也十分完善。


640?wx_fmt=png


JavaScript小小的标准库不足以应付各种开发需求。在Github上,有许多流行的JavaScript库。在这里,我整理了一个列表推荐给大家:


1. Underscore & Lodash (dah)

也许大多数童鞋都已经知道它们。Underscore提供了日常使用的基础函数。Lodash, 作为NPM最多下载量和被依赖最多的包,提供了更加支持跨环境一致性的对数组、字符串、对象和参数对象的支持。它已经是Underscore的超集。Underscore和Lodash有同一组核心开发者维护。你日常开发中绝对少不了要用到它。


  • Lodash:https://github.com/lodash/lodash

  • Underscore:https://github.com/jashkenas/underscore

2. Ramda

拥有超过12K的stars,Ramda库可以用来在JavaScript中函数式编程,专门为函数式编程风格而设计,更容易创建函数式 pipeline、且从不改变用户已有数据。

摘自官方:


Ramda 主要特性如下:


  • Ramda 强调更加纯粹的函数式风格。数据不变性和函数无副作用是其核心设计理念。这可以帮助你使用简洁、优雅的代码来完成工作。

  • Ramda 函数本身都是自动柯里化的。这可以让你在只提供部分参数的情况下,轻松地在已有函数的基础上创建新函数。

  • Ramda 函数参数的排列顺序更便于柯里化。通常最后提供要操作的数据。


最后两点一起,使得将多个函数构建为简单的函数序列变得非常容易,每个函数对数据进行变换并将结果传递给下一个函数。Ramda 的设计能很好地支持这种风格的编程。


  • Ramda:https://github.com/ramda/ramda


你也可以看看:immutable.js(https://github.com/facebook/immutable-js/

3. MathJS

拥有超过6K的stars,Math.js是一个Node.js和JavaScript的math扩展库,并且和内置的Math库兼容。该库中包含一个灵活的表达式分析器,并且有非常多的内置函数可以使用。你甚至可以自行做扩展。


  • Math.js:https://github.com/josdejong/mathjs


4. Moment/date-fns

拥有超过40K的stars,moment.js是一个JavaScript的时间处理库,可以用来分析、验证、处理和格式化时间。Moment被设计可以用于浏览器和Node.js环境下。对于V2.10.0,代码完全用ECMAScript 6模块实现。


Date-fns也是一个非常流行(超过11K的stars)的时间处理库,提供超过130多个函数,很多人把它当做moment.js(查看对比:https://github.com/date-fns/date-fns/issues/275#issuecomment-264934189)的替代品。Date-fns完全用纯函数实现,并保证不可修改性。它可以很好的和webpack,Browserify、或Rollup配合使用,并支持tree-shaking。


  • moment:https://github.com/moment/moment/

  • date-fns:https://github.com/date-fns/date-fns


5. Sugar

拥有超过3.5K个stars,Sugar是一个可以用来处理原生对象的库。自定义的构建和模块化的npm包,使得你可以只需要加载你需要的包。用户也可以自定义方法或则使用插件处理特殊情况。


  • Sugar:https://github.com/andrewplummer/Sugar


640?wx_fmt=png


6. Lazy

拥有5K个stars,lazy.js是一个函数式的JavaScript库。该库的底层的实现都是懒执行的,也就是说尽量不做运算,除非站的需要。这个库不依赖第三方库,这里有一个demo(http://danieltao.com/lazy.js/demos/events/),这里是API文档(http://danieltao.com/lazy.js/)。


比如,我们要生成300个1到1000之间完全不同的随机数,可以这样写:

Lazy.generate(Math.random)
  .map(function(ereturn Math.floor(e * 1000) + 1; })
  .uniq()
  .take(300)
  .each(function(econsole.log(e); });


用JavaScript直接去写,代码就会复杂很多了。


  • lazy.js:https://github.com/dtao/lazy.js

7. CollectJS

拥有超过3.5K个stars,collect.js是一个非常有前景并且不依赖于任何第三方库的库。它提供了针对数组和对象的包装,使用非常方便。

const collection = collect([{
  name: 'JavaScript: The Good Parts', pages: 176
}, {
  name: 'JavaScript: The Definitive Guide', pages: 1096
}]);

collection.avg('pages');

//=> 636


  • collect.js:https://github.com/ecrmnn/collect.js/


8. ChanceJS

Chance是一个用来随机生成字符串、数字等的函数,他可以减少一些非随机性,在你需要写自动化测试或则其它你需要生成随机的地方很有用。虽然只要3K个stars,但是这个库真的非常方便。


640?wx_fmt=png


  • chancejs:https://github.com/chancejs/chancejs

9. ChartJS

拥有超过40K的stars,chart.js是一个少即是多的的经典例子。它只提供了8中可视化的类型,每一种都有动画并且可以自定义。Chart.js让你可以使用<canvas>标签来作图,并且在不同的浏览器上高效渲染。


  • chart.js:https://github.com/chartjs/Chart.js


640?wx_fmt=png

10. Polished

拥有超过3.5K个stars,由styled-components(https://github.com/styled-components/styled-components)团队开发,Polished是一个用于写css样式的工具集,提供saas风格的帮助函数和mixins。该库和styled-components,Aphrodite,Radium兼容。


  • polished:https://github.com/styled-components/polished

11. Mout

Mout.js是一个JavaScript的模块化工具集合,能够以AMD模块的形式在浏览器中使用或者在Node.js中。Mout.js让你可以只加载你需要的模块或者函数,如下所示:

// you can load individual methods (recommended)
var map = require('mout/array/map');
map([12], function(v)return val * val; }); // [1, 4]

// a single package
var stringUtils = require('mout/string');
stringUtils.camelCase('Foo Bar'); // "fooBar"

// or the whole lib
var mout = require('mout');
console.log( mout.math.clamp(17010) ); // 10


  • mout:https://github.com/mout/mout

其他

Voca


一个用于处理字符串的JavaScript库,包含了很多的帮助函数,比如:change case, trim, pad, slugify, latinise, sprintf‘y, truncate, escape等等。


  • voca:https://github.com/panzerdp/voca


Licia


虽然只有500来个stars,但是Licia提供了非常多的工具函数,对于日常使用非常有帮助。


官方介绍:


Licia是一套在开发中实践积累起来的实用JavaScript工具库。该库目前拥有超过180个模块,包括Dom操作,cookie设置,类创建,模板函数,日期格式化等实用模块,同时配套有打包工具Eustia进行定制化,使JS脚本加载量缩减在10KB以下,极大优化移动端页面的加载速度。


640?wx_fmt=jpeg


Licia由RedHood(https://www.surunzi.com/)开发,详细了解可以查看他本人在知乎上写的对Licia的介绍: 超实用JavaScript工具库(https://zhuanlan.zhihu.com/p/25502829)。


  • licia:https://github.com/liriliri/licia


来源:https://blog.fundebug.com/2018/07/02/11-js-utility-you-should-know-in-2018/

原文:11 Javascript Utility Libraries You Should Know In 2018(https://blog.bitsrc.io/11-javascript-utility-libraries-you-should-know-in-2018-3646fb31ade)

翻译:Fundebug


640?wx_fmt=png


选择置顶,关键时刻

第一时间送达! 

640?wx_fmt=jpeg


长按二维码关注

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/525639.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

云化要求下,数据库架构的演进

如今&#xff0c;大型企业如金融企业和银行等&#xff0c;在下一代的微服务架构转型要求下&#xff0c;需要基础软件和数据平台能够实现原生的云化&#xff0c;以满足微服务架构的需求。微服务&#xff0c;也就是一种面向服务的&#xff0c;有特定边界的松散耦合的架构。主要特…

消息中间件—简谈Kafka中的NIO网络通信模型

前面写的两篇RocketMQ源码研究笔记系列&#xff1a;1. 消息中间件—RocketMQ的RPC通信&#xff08;一&#xff09;2. 消息中间件—RocketMQ的RPC通信&#xff08;二&#xff09;基本上已经较为详细地将RocketMQ这款分布式消息队列的RPC通信部分的协议格式、消息编解码、通信方式…

如何系统学习领域驱动设计?

一、领域驱动设计为何又焕发青春&#xff1f;领域驱动设计&#xff08;Domain Driven Design&#xff0c;DDD&#xff09;确实已不再青春&#xff0c;从 Eric Evans 出版了划时代的著作《领域驱动设计》至今&#xff0c;已有将近十五年的时间&#xff0c;在软件设计领域中&…

如何运用DDD解决团队协作与沟通问题?

领域驱动设计的核心是“领域”&#xff0c;因此要运用领域驱动设计&#xff0c;从一开始就要让团队走到正确的点上。当我们组建好了团队之后&#xff0c;应该从哪里开始&#xff1f;不是UI原型设计&#xff0c;不是架构设计&#xff0c;不是设计数据库&#xff0c;这些事情重要…

微服务等于Spring Cloud?一文告诉你微服务到底是什么

作者&#xff1a;TIM XU 原文&#xff1a;https://xiaoxubeii.github.io/articles/microservices-architecture-introduction/1微服务初探什么是微服务&#xff1f;首先微服务并没有一个官方的定义&#xff0c;想要直接描述微服务比较困难&#xff0c;我们可以通过对比传统WEB应…

我们爬了上千个数据分析师信息, 你真的懂数据分析师嘛?

01 项目简介有人说&#xff0c;这个时代&#xff0c;只要站在了风口&#xff0c;猪都能飞起来&#xff0c;尤其互联网行业&#xff0c;千变万化&#xff0c;日异月殊&#xff0c;一不小心就错过了风口&#xff0c;如果没记错的话&#xff0c;前几年火的是App开发&#xff0c;后…

高可用Redis服务架构分析与搭建

作者&#xff1a;HorstXu 原文&#xff1a;https://www.cnblogs.com/xuning/p/8464625.html基于内存的Redis应该是目前各种Web开发业务中最为常用的Key-Value数据库了&#xff0c;我们经常在业务中用其存储用户登陆态&#xff08;Session存储&#xff09;&#xff0c;加速一些热…

java怎么弄redis,java怎么使用redis

开始在 Java 中使用 Redis 前&#xff0c; 我们需要确保已经安装了 redis 服务及 Java redis 驱动&#xff0c;且你的机器上能正常使用 Java。Java的安装配置可以参考我们的 Java开发环境配置 接下来让我们安装 Java redis 驱动&#xff1a;首先你需要下载驱动包 下载 jedis.ja…

我花了14个小时找了一下长春长生们究竟卖到了哪里去

前言本文首发于个人的公众号和v2ex&#xff0c;事先也没想到会有这么多人关注。在这边重新编辑一下&#xff0c;去掉了原先前言中对此次疫苗事件背景的描述及部分不严谨的措辞。全文的观点从技术讨论出发&#xff0c;尽量客观中立&#xff0c;观点及行为为员工自发&#xff0c;…

我们分析了50万条拼多多商品数据,告诉你到底是消费升级还是降级?

作者&#xff1a;放开那个猕猴桃来源&#xff1a;人工智能与大数据生活转自&#xff1a;知乎&#xff0c;恋习Python一、缘起我在杭州有位朋友&#xff0c;提到有家做社交的电商很火&#xff0c;叫拼多多&#xff0c;我没有在意&#xff0c;直到有一天&#xff0c;我居然在电视…

java并发集合面试题,那些经常被问的JAVA面试题(1)—— 集合部分

【本文转自极客原创 作者&#xff1a;张锋 原文链接&#xff1a;】Java集合框架是什么&#xff1f;说出一些集合框架的优点&#xff1f;每种编程语言中都有集合&#xff0c;最初的Java版本包含几种集合类&#xff1a;Vector、Stack、HashTable和Array。随着集合的广泛使用&…

拯救阿波罗14号!那些伟大太空计划背后的计算机工程师们

&#xfeff;&#xfeff;1971年1月31日&#xff0c;阿波罗14号发射。外太空旅行近一周后的凌晨&#xff0c;回程中的阿波罗14号突然面临一个严峻的问题&#xff1a;它可能没办法正常降落了。问题出在其计算机工程师Don Eyles编写的一个应急程序上&#xff0c;他必须在很短的时…

golang web php,golang 适合做web开发吗

使用go语言来做web开发&#xff0c;是非常方便的。如果不使用框架&#xff0c;仅仅使用net/http包&#xff0c;也能快速开发一个web应用。但是&#xff0c;官方包不支持RESTful风格的API&#xff0c;所以我们依然还是需要选择一个框架来帮助我们进行开发。 (推荐学习&#xff1…

我又花了28个小时分析了一下各省二类疫苗采购公示数据

1前 言距离《我花了14个小时找了一下长春长生们究竟卖到了哪里去》发出来已经过去了4天&#xff0c;过去的几天里&#xff0c;每天晚上我都在搜集和整理数据&#xff0c;终于把之前没做完的工作做的差不多了。现在做一个大致的总结&#xff0c;分析相对粗略&#xff0c;大家见…

[重磅] 如何更好地实现服务调用和消息推送

第四届阿里中间件性能挑战赛是由阿里巴巴集团发起&#xff0c;阿里巴巴中间(Aliware)、阿里云天池联合举办&#xff0c;是集团少有的工程性品牌赛事。大赛的初衷是为热爱技术的年轻人提供一个挑战世界级技术问题的舞台&#xff0c;希望选手在追求性能极致的同时&#xff0c;能深…

开发怼产品,天经地义?大惊小怪?

最近&#xff0c;又有一件轰动程序员界的事情发生了&#xff0c;想必大家伙都已经奔走相告了。来回顾下事情的经过&#xff0c;1张图就能说明白了骚不&#xff1f;反正有句话叫「从技术层面出发&#xff0c;总归有办法实现的」&#xff0c;还有这么一句话叫「从技术角度出发&am…

php实现数据排序算法,PHP实现排序堆排序算法

这篇文章主要为大家详细介绍了PHP实现排序堆排序(Heap Sort)算法&#xff0c;具有一定的参考价值&#xff0c;感兴趣的小伙伴们可以参考一下算法引进&#xff1a;在这里我直接引用《大话数据结构》里面的开头&#xff1a;在前面讲到 简单选择排序 &#xff0c;它在待排序的 n 个…

谷歌Edge TPU:将机器学习引入边缘,撬动边缘计算/IOT大“地球”

近期&#xff0c;谷歌在Cloud Next会议上推出其最新产品&#xff0c;Edge TPU芯片和Cloud IOT Edge软件&#xff0c;并将于10月推出Edge TPU开发套件。作为Cloud TPU的补充&#xff0c;目前Edge TPU仅用于推理&#xff0c;专为在边缘运行TensorFlow Lite ML模型而设计。Edge TP…

详解云计算、大数据和人工智能的区别与联系

今天跟大家讲讲云计算、大数据和人工智能。为什么讲这三个东西呢&#xff1f;因为这三个东西现在非常火&#xff0c;并且它们之间好像互相有关系&#xff1a;一般谈云计算的时候会提到大数据、谈人工智能的时候会提大数据、谈人工智能的时候会提云计算……感觉三者之间相辅相成…

关于腾讯云丢数据事件的一些看法

事件回顾&#xff1a;创业公司“前沿数控”8月5日发文称&#xff0c;公司存放在腾讯云上的精准注册用户以及内容数据全部丢失&#xff0c;并且不能恢复&#xff0c;造成公司平台全部停运的状态。前沿数控表示&#xff0c;公司丢失的数据近千万元级&#xff0c;对此索赔1000余万…