推荐好用的JavaScript模块

栏目: Node.js · 发布时间: 5年前

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

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

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

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

推荐好用的JavaScript模块

命令行工具

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

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

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

推荐好用的JavaScript模块

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

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

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

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

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

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

推荐好用的JavaScript模块

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

推荐好用的JavaScript模块


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

强化学习精要

强化学习精要

冯超 / 电子工业出版社 / 2018-6 / 80

《强化学习精要:核心算法与TensorFlow 实现》用通俗幽默的语言深入浅出地介绍了强化学习的基本算法与代码实现,为读者构建了一个完整的强化学习知识体系,同时介绍了这些算法的具体实现方式。从基本的马尔可夫决策过程,到各种复杂的强化学习算法,读者都可以从本书中学习到。本书除了介绍这些算法的原理,还深入分析了算法之间的内在联系,可以帮助读者举一反三,掌握算法精髓。书中介绍的代码可以帮助读者快速将算法......一起来看看 《强化学习精要》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具