推荐好用的JavaScript模块

译者按: 做者将本身经常使用的JavaScript模块分享给你们。javascript

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

本文介绍了我在平常工做中一直使用的JavaScript模块,包括NodeJS和前端JavaScript。固然,这篇文章会有强烈的我的主观性。我推荐的模块可能会有遗漏,而且不会包含任何特定用途的模块。好比有一些推荐的模块确实很酷,可是不必定实用。前端

命令行工具

咱们先来介绍命令行工具。java

np 一个更好的发布npm模块的工具

若是你是一个npm包的做者,我强烈推荐你使用np,它使得版本控制、添加git release tag,和发布到npm一鼓作气。特别是若是你拥有多个npm模块的时候。同时我也推荐Zeit发布的release也是一个很不错的选择。node

yarn 一个比npm更好的包管理工具

尽管np v5已经比以前的版本快了许多,从速度和一致性的角度,我依然更加倾向于在本地开发中使用yarn来管理。无论哪一种方式,底层都是在和同一个npm模块的数据库交互,因此我想他两之间没有一个绝对的胜者。你选择最适合你本身的就好。git

做为一个2018年的JS开发者,我建议你将二者都熟悉。github

prettier 一个公认的代码美化工具

Prettier经过分析你的代码而后从新排版来保证代码格式的一致性。我喜欢eslint并一直使用JavaScript的标准格式风格,可是prettier和gofmt这种自动化格式美化带来的吸引力没法拒绝。golang

做为开发者,咱们花了太多的时间和精力去维护代码格式,实在是浪费。使用prettier这类工具可让咱们从这些杂事中解脱,专一于代码。chrome

now 超级简单的部署工具

从简洁性、稳定性和拥有的特性上来讲,Now绝对是如今最好的免费的部署系统。不论是静态仍是动态部署、甚至要扩展到多个服务器,均可以很好的为你服务。并且,最重要的一点,就算你扩展到多服务器,仍是免费的!shell

Now对Node.js以及JS支撑的网页应用都支持很好。我强烈推荐大家也看看Zeit推出的其它服务。

asciinema 免费录制Terminal的工具

你可使用asciinema来录制Terminal操做。

Promise

pify

我发现pify是最好的模块,用来将回调函数风格的函数转为Promise。它很轻巧,并且有连util.promisify都没有的自动方法绑定功能。

p-map

p-map用来设置并发地执行promises。考虑到计算资源和带宽,你确定不想没有限制地彻底并发全部的promise,p-map能够设置并发数量。我想你彻底能够用p-map来替代Promise.all(...)。

p-retry

一般,我会使用p-retry将全部的HTTP请求和外部服务包裹起来,来进一步加强代码的健壮性。p-retry能够配置retry的次数。配合p-map,你能够并发执行大量的请求并且不用担忧偶尔遇到网络错误、服务器超时和Socket中断等等。

p-timeout

p-timeout也是一个必不可少的模块。

p-cache/p-memoize

经过LRU缓存来记住async函数的结果。

这些Promise工具函数库让我想起了关于构建健壮微服务的文章,每个外部依赖均可以包含一个统一的接口包括retry, timeout, caching,circuit breakers, 回滚等等。

内容抓取

cheerio

若是你想处理原生的HTML,Cheerio是一个很棒的工具。它提供了像jQuery同样的语法来访问和处理HTML文档。Cheerio配合request-promise-native来获取网页最佳。

puppeteer

和cheerio不一样,puppeteer是一个用来自动化运行headless chrome instance的工具。它能够用来:1. 生成页面的截图或则PDF;2. 爬取单页面应用内容并将其渲染(SSR);3. 自动化表单填写、UI测试、输入等等。它将逐渐取代像PhantomJS这样的技术。

Node.js

dotenv-safe

dotenv-safe是dotenv模块的扩展,从.env加载本地环境变量,并确保它们都存在。经过配置.env.example文件来制定哪些变量必需要配置。

requestrequest-promise-native

执行HTTP请求是一个很常见的操做,我选择request-promise-native模块。该模块将request模块拓展成Promise。95%的状况下,我使用await来处理HTTP请求,只有5%的时间我须要直接用request来处理返回数据。

为了健壮性,我会配合p-retry,p-timeout和p-cache来使用。

另外我补充一下, got是一个新的候选项,虽然我还没怎么使用不少。

consolidate

Consolidate用来处理后端模板化颇有用(邮件、推特、原生HTML等等)。我一般使用handlebars来做为模板引擎,不过我会配合使用consolidate。由于它有更加简洁和UI之的界面,无论你在底层使用何种引擎均可以配合使用。

execa

当你须要执行shell脚本或则子进程的时候颇有用。

fs-extra

我几乎不使用fs模块了,fs-extra为fs模块附加了很多方法而且支持Promise。

Math

D3 (Data-Driven Documents) 是一个流行的前端数据可视化库,它同时也包含了不少常见的数学操做的库。我常常用到那些库,接下来推荐给大家。

d3-random 生成随机数

当你以为Math.ramdom不够用的时候,不妨试试d3-random。它支持用不一样的分布来随机,好比均匀分布、正太分布和指数分布。

d3-ease

Easing 是一种经过扭曲时间来控制动画中的表现形式的方法。一般被用来 slow-in, slow-out。经过对时间的缓动,animated transitions 会更平滑且运动过程也更合理。

d3-interpolate

这个库提供了多种作插值的方法来对数字、颜色、字符串、数组、对象等进行插值。

Testing

ava

Ava是一个很棒的JS测试器,请不要惊讶我又使用了Sindre Sorhus创造的另外一个工具。它包含了mocha, tape, chai以及其余工具的优势。

nock

Nock 是前端经常使用来模拟http请求响应的工具,它基于nodejs的原生http模块。

sinon

Sinon.js是一个很是有用的测试辅助工具,在为Node程序写测试时可能能够派上用场。我建议每个Node开发者都应该将它加入到本身的工具库中。

关于Fundebug

Fundebug专一于JavaScript、微信小程序、微信小游戏、支付宝小程序、React Native、Node.js和Java实时BUG监控。 自从2016年双十一正式上线,Fundebug累计处理了9亿+错误事件,获得了Google、360、金山软件、百姓网等众多知名用户的承认。欢迎免费试用!

版权声明

转载时请注明做者Fundebug以及本文地址: https://blog.fundebug.com/2018/12/18/javascript-modules-worth-using/

相关文章
相关标签/搜索