推荐好用的JavaScript模块

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

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

  • 原文:? JavaScript Modules Worth Using ?
  • 译者: Fundebug

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

本文介绍了我在日常工作中一直使用的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文件来制定哪些变量必须要配置。

request和request-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/

转载于:https://my.oschina.net/u/3375885/blog/2989755

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/537299.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python直接连接oracle_python连接oracle

一:弄清版本,最重要!!!首先安装配置时,必须把握一个点,就是版本一致!包括:系统版本,python版本,oracle客户端的版本,cx_Oracle的版本&…

项目计划不要拖,要赶紧排

目录 案例 复盘 应对 总结 案例 业主:这个项目很急,赶紧干活吧,明天就安排人来干活。 于是,项目经理问公司要来资源,第二天就投入到项目里。 公司只有一个项目,这样搞,项目能顺利实施,业主满意,公司老板感觉这种方法不错哦。 当公司项目越来越多了,员工也越来…

select函数_SQL高级功能:窗口函数

一、窗口函数有什么用?在日常生活中,经常会遇到需要在每组内排名,比如下面的业务需求:排名问题:每个部门按业绩来排名topN问题:找出每个部门排名前N的员工进行奖励面对这类需求,就需要使用sql的…

客户端C++与前端js交互

客户端与前端交互 qwebchannel.js文件引入建立通信// c发送消息给js new QWebChannel(qt.webChannelTransport, function(channel){var content channel.objects.jsContext;// 建立通信后,客户端通过调用 sMsg 方法来执行后面的回调函数,从而实现c与j…

python动态映射_sqlalchemy动态映射

似乎您可以直接使用属性,而不是使用columnsdict。考虑以下设置:from sqlalchemy import Table, Column, Integer, Unicode, MetaData, create_enginefrom sqlalchemy.orm import mapper, create_sessionclass Word(object):passwordColumns [english, k…

linux外接显示屏,关掉本身的笔记本电脑

https://blog.csdn.net/a2020883119/article/details/79561035 先用xrandr命令查看: eDP-1 connected eDP-1是连接着的 关掉:sudo xrandr --output eDP-1 --off 打开:sudo xrandr --output eDP-1 --auto

发挥项目“临时性”威力,让项目顺利实施

所谓临时性,就是要有明确的“开始”和“结束”。虽然大家都知道项目一定会有开始和结束的,但要更多地关注“明确“。 问题1:问商务(售前)或业主,这个项目什么时候结束? 答:商务或业主他们有时候也不知道,因为国内的项目大多数是提前开始交付,是一边交付,一边把里程…

上拉加载更多后台数据_6-7【微信小程序全栈开发课程】记录页面(七)--分页加载记录数据...

现在是一次性加载所有的记录数据,数据多的时候,会加载比较慢,所以我们改成分页加载,一次最多加载15条数据每次拉倒底部都会自动加载下一页的数据,知道所有的数据加载完成1、添加data变量编辑record.vue文件&#xff0c…

spring cloud eureka服务注册和调用

SPRING INITIALIZR构建工程 spring boot 可通过SPRING INITIALIZR构建项目访问SPRING INITIALIZR官网,填写项目相关信息后,生成项目。将下载的项目解压,打开idea,file-->new-->project from existing sources。import proje…

去从事有门槛有积累的工作

现在社会的IT工作,一时风光无限,但是积累性不足。跟老外比较起来,国内的IT算是民工级别的。再加上,前些年的培训机构,不断的输出水平很次但很能加班的「人才」进入这个行业,「劣币驱逐良币」的效果下&#…

打印工资条怎么做到每个人都有表头明细_朋友说:能不能用python,帮我写一个“制作工资条”的自动化程序?...

本文说明今天和一个朋友吃饭,她说我经常使用Excel制作工资条,但是每个月都要做一遍,你能不能用python写一个代码,能够自动化完成这个工作。这当然可以啦,就是这么牛逼!我们先来看看原始数据是什么样子的。那…

自定义按钮 图片标题位置随意放置

自定义按钮UIControl 写在前面 #图标和文字在一起是开发难免的问题,系统的按钮默认是图片居左的文字居右的, 且图片和文字的距离不好调整,图片的位置更是让人头疼, 故在闲暇之余封装了一个控件。 复制代码所用到知识的 # 1、苹果系…

做优化的数据库工程师请参考!CynosDB的计算层设计优化揭秘

本文由云社区发表本文作者:孙旭,腾讯数据库开发工程师,9年数据库内核开发经验;熟悉数据库查询处理,并发控制,日志以及存储系统;熟悉PostgreSQL(Greenplum,PGXC等&#xf…

netty发送数据_看完这篇还不清楚Netty的内存管理,那我就哭了

说明在学习Netty的时候,ByteBuf随处可见,但是如何高效分配ByteBuf还是很复杂的,Netty的池化内存分配这块还是比较难的,很多人学习过,看过但是还是云里雾里的,本篇文章就是主要来讲解:Netty分配池…

数字化改革体系架构“152”两次迭代升级为“1612”

数字化改革体系架构已经完成两次迭代,152-1512-1612。 2021年,浙江在全国率先启动一项关系全局、影响深远、制胜未来的重大集成改革——数字化改革,并确定为全面深化改革的总抓手。 2021年2月18日,数字化改革大会“152”工作体系…

微软希望每个人有自己的人工智能朋友

微软正在和其他公司那样投资和研发人工智能技术,同时微软也希望人工智能技术能够深入我们的日常生活。 为此微软正在申请新的专利技术希望每个人在社交网络上都有自己的人工智能朋友可以随时随地的沟通交流。 实际上该专利属于已经实践的内容再来申请专利技术的&…

python 40位的数减个位数_Python数据分析入门教程(五):数据运算

作者 | CDA数据分析师进行到这一步就可以算是开始正式的烹饪了,在这部分之前的数据操作部分我们列举了一些不同维度的分析指标,这一章我们主要看看这些指标都是怎么计算出来的。一、算术运算算术运算就是基本的加减乘除,在Excel或者Python中数…

数字化改革“152”体系详解

架构图 “1” 即一体化智能化公共数据平台(平台大脑),按照“统一规划、统一支撑、统一架构、统一平台、统一标准、统一建设、统一管理、统一运维"的要求,建设省市县三级公共数据平台,叠加三级“大脑功能&#xf…

数字化改革“141”体系

县级以上是“152”大框架,县以下是“141”体系。 141体系是:县级社会治理中心、乡镇(街道)基层治理“四个平台”、村社网格。 “1” 第一个“1”指县级社会治理中心。 “4” 第二个“4”指乡镇(街道)基…

spring boot——MockMvc的用法

1.pom配置 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId> </dependency> 2.所需对象及Controller public class User {private String id;private String username;private…