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

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

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

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

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(e) { return Math.floor(e * 1000) + 1; })  .uniq()  .take(300)  .each(function(e) { console.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,但是这个库真的非常方便。

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

9. ChartJS

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

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

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([1, 2], function(v){ return val * val; }); // [1, 4]

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

// or the whole libvar mout = require('mout');console.log( mout.math.clamp(17, 0, 10) ); // 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以下,极大优化移动端页面的加载速度。

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

选择置顶,关键时刻

第一时间送达!

长按二维码关注

2018 年你需要知道的 11 个 JavaScript 库相关推荐

  1. 移动产品经理必须要知道的11件事

    1.Mobile Website.Hybrid App.Native App的区别 Native App:基于本地(操作系统)运行的APP,从应用商店下载,不一定要联网才可以使用,优势在于针对不同平台 ...

  2. 程序员一定要知道的11个实用工具网站

    目录 1.搜索引擎 2.PPT 3.图片操作 4.文件共享 5.应届生招聘 6.程序员面试题库 7.办公.开发软件 8.高清图片.视频素材网站 9.项目开源 10.算法 11.在线工具宝典大全 程序员 ...

  3. 作为数据科学家应该知道的11件事

    背景 在我们举办的聚会期间,我们见到了很多朋友.从数据科学领域完全的菜鸟到专家,在同一个屋檐下,每个人都发出自己的疑惑.然而,当我们面对这群朋友--很大比例的这部分人(包括一些专家),一件事情显得尤为 ...

  4. 初识Mysql(part5)--我需要知道的11条Mysql语句之过滤

    学习笔记,以代码和例子堆砌而成,方便查阅. 参考书籍:<Mysql必知必会>等 要点:WHERE关键字.AND关键字.OR关键字.IS关键字.IN关键字 此Blog里的例子都会用下面int ...

  5. java怎样实现数据库 选择列属性的select查询??_除了不要 SELECT * ,使用数据库还应知道的11个技巧!...

    来源:AIOps 应用程序慢如牛,原因多多,可能是网络的原因.可能是系统架构的原因,还有可能是数据库的原因. 那么如何提高数据库SQL语句执行速度呢?有人会说性能调优是数据库管理员(DBA)的事,然而 ...

  6. 优秀的程序员都应当知道的11个警句

    1. 技术只是解决问题的选择,而不是解决问题的根本 我们可以因为掌握了最新的 JavaScript 框架 ahem.Angular 的 IoC 容器技术或者某些编程语言甚至操作系统而欢欣雀跃,但是这些 ...

  7. 人工智能ai的有关专业术语_您需要知道的11个人工智能术语

    人工智能ai的有关专业术语 "Any fool can know. The point is to understand." - Albert Einstein "任何傻 ...

  8. android auto 能微信_想使用Android Auto系统你需要知道的11件事

    如果你想要在自己的汽车里使用Android Auto,但是又不知道从何做起.没关系,最近科技网站greenbot专门为我们详细介绍了使用Android Auto系统时应该知道的几件事,包括软件的内部运 ...

  9. java api 开发_Java开发人员应该知道的前20个库和API

    java api 开发 优秀且经验丰富的Java开发人员的特征之一是对API的广泛了解,包括JDK和第三方库. 我花了很多时间来学习API,尤其是在阅读了Effective Java 3rd Edit ...

最新文章

  1. 使用C++实现一套简单的状态机模型——原理解析
  2. 微软语音AI技术与微软听听文档小程序实践 | AI ProCon 2019
  3. 吴恩达机器学习(第一章)——初识机器学习
  4. 服务器测试文件怎么创建,如何创建一个“FTPS”模拟服务器以单元测试Java中的文件传输...
  5. Mysql中用between...and...查询日期时注意事项
  6. 怀旧服最新服务器塞卡尔,魔兽世界怀旧服:10个至今未开门的服务器!圣光服进度刚到20%!...
  7. Linux DMA Engine framework(3)_dma controller驱动
  8. boost context上下文切换
  9. android 烟花动画效果图,android利用图片实现烟花效果
  10. 全球各国语言代码缩写与国家对照表
  11. mysql 空格键和回车键查询
  12. #天府TV#《什么是成都》爆红背后,还有上千热泪盈眶留言!
  13. unity如何插入图片_Unity3D教程:导入贴图和模型
  14. 使用Nginx搭建图片服务器
  15. 关于 Vue.js 的那些事儿
  16. sql嵌套查询出现类型问题
  17. 《中国历代著名文学家评传》目录
  18. Access数据类型
  19. dialog使用(dialog使用方法)
  20. 位图php,ps中什么是位图

热门文章

  1. mysql 攻击密码_MySQL用户Root密码为弱口令的攻击
  2. android 获取wifi的加密类型,wifi加密类型
  3. python 编辑距离_最小编辑距离python
  4. 985博导:我的研究生,学生会干部不招,面试的时候,直接淘汰!
  5. 钱老,外国人能搞的,今天中国人也能搞了!
  6. 31岁博士副县长拟提任正处,3年前毕业被人才引进
  7. 美国著名核物理学家,前半生为美国造核弹,后半生为中国放牛
  8. 你还记得20年前的语文课本吗?
  9. Fast Matrix Factorization for Online Recommendation with Implicit Feedback论文代码分析
  10. RabbitMQ TTL、死信队列在订单支付场景的应用