推荐好用的JavaScript模块

译者按: 作者将自己常用的 JavaScript 模块分享给大家。

本文采用意译,版权归原作者所有

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

命令行工具

我们先来介绍命令行工具。

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

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

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

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

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

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

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

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

now 超级简单的部署工具

从简洁性、稳定性和拥有的特性上来说,Now 绝对是现在最好的免费的部署系统。不管是静态还是动态部署、甚至要扩展到多个服务器,都可以很好的为你服务。而且,最重要的一点,就算你扩展到多服务器,还是免费的!

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、微信小程序、支付宝小程序线上应用实时BUG监控。 自从2016年双十一正式上线,Fundebug累计处理了80亿+错误事件。欢迎大家免费试用

版权声明

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

您的用户遇到BUG了吗?

体验Demo 免费使用