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;有特定边界的松散耦合的架构。主要特…

java定义变量的输入_Terraform中输入变量

Terraform中输入变量把所有的信息&#xff0c;如access_key等全部硬编码显然是不安全的。因此需要能够参数化配置。变量定义首先需要先定义(声明)变量&#xff0c;放到一个.tf文件中&#xff0c;如&#xff1a;variable "access_key" {}variable "secret_key&qu…

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

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

java整属取余数_js取整数、取余数的方法

摘要&#xff1a;这篇JavaScript栏目下的“js取整数、取余数的方法”&#xff0c;介绍的技术点是“取余数、取整数、取余、取整、js、方法”&#xff0c;希望对大家开发技术学习和问题解决有帮助。1.丢弃小数部分,保留整数部分parseInt(5/2)2.向上取整,有小数就整数部分加1Math…

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

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

java当中有关循环的代码_有关Java循环的内容,编程中还是比较常用的,下面分享给大家几个循环的示例代码,练习一下。1、循环输出1到100之间所有能被3或能被4整除的数。pack...

有关Java循环的内容&#xff0c;编程中还是比较常用的&#xff0c;下面分享给大家几个循环的示例代码&#xff0c;练习一下。1、循环输出1到100之间所有能被3或能被4整除的数。package com.hz.loop02;/*** 1、循环输出1到100之间所有能被3或能被4整除的数。* author ztw**/publ…

java的编辑框丢失焦点_java – 捕获EditText丢失焦点

我是一名长期,自学成才的业余VB程序员,现在正在尝试自学Java和Android.我这样说,所以你会知道我不会说好语言,而且对这两种追求都是非常新的.我开发了一个Android表单,其中包含一系列EditText框,每个框的内容都要在用户填写后保存到数组中.如果用户按下Enter键,我已经想出了如何…

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

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

centos6 mysql 启动_【17-02-18】 【求助】centos6 mysql重启后无法正常启动

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼# service mysqld restartStopping mysqld: [ OK ]MySQL Daemon failed to start.Starting mysqld: [FAILED]下面是# vim /var/log/mysqld.log2017-02-16 18:32:07 12429 [Note] Plugin FEDERATED is disabled.2017-02-16 18:32:07…

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

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

在php中图片放大怎么实现,用PHP实现图片的缩放与裁剪

图片太大且规格不统一&#xff0c;显示的控制需要靠JavaScript来完成&#xff0c;用在移动设备上时显示效果不好且流量巨大&#xff0c;需要对现有图片库的图片进行一次处理&#xff0c;生成符合移动设备用的缩略图&#xff0c;将原来客户端JS做的工作转移到服务器端用PHP的GD库…

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

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

java游戏可以刷升级挖药材,【毕业设计】Java手机游戏设计

内容介绍原文档由会员 莎士比亚 发布论文标准WORD格式排版 67页 24714字 附程序设计源文件1 绪论1.1 手机软件现状在信息社会中&#xff0c;手机及其他无线设备越来越多的走进普通百姓的工作和生活&#xff0c;随着信息网络化的不断进展&#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;…

java jackson 注解,java – 如何使用Jackson注释序列化此JSON?

我有以下JSON&#xff1a;{fields : {"foo" : "foovalue","bar" : "barvalue"}}我写了一个pojo如下&#xff1a;public class MyPojo {JsonProperty("fields")private List fields;static class Field {JsonProperty("…

我们分析了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。随着集合的广泛使用&…

php7 二维数组排序,PHP二维数组排序

以前遇到二维数组排序的问题都是自己写排序函数&#xff0c;今天遇到一个二维数组排序问题&#xff0c;就想简单一点&#xff0c;网上找了一圈&#xff0c;没发现比较简单的写法&#xff0c;研究了一下PHP自带的函数&#xff0c;发现只使用array_multisort这个函数就可以实现二…