那些值得一用的JS库

本文收集了前端JS开发和NodeJS开发中的一些优秀的库和工具。

1. 命令行工具

np - 更好的npm publish

如果你是一个npm作者,强烈推荐使用np模块,它能为你轻而易举地解决更新版本、添加git发布tag和发布代码到npm,特别是当你有很多npm模块要维护的时候。

yarn - 更好的包管理工具,同时兼容npm

虽然npm v5已经比上一个版本速度提升很多,但是个人感觉在本地开发中yarn仍然以速度和稳定性取胜。但是无论用哪个工具,你都在使用同一个npm包的数据,究竟两者孰优孰劣并没有定论,所以挑选哪个工具还是要看你的项目需求。

prettier - 强烈推荐的一款代码格式化工具

Prettier通过代码解析强制要求代码风格保持一致,然后用内置的规则来重新输出样式,并通过必要的代码封装来限制代码最大行数。

now

Now毫无疑问是迄今为止最好的免费部署系统,以简单、稳定和功能多著称。它非常适合测试静态和动态部署,并且很方便扩充服务器。

asciinema - 录制高质量的终端(terminal)信息

一款录制终端 & 代码的神器,从此分享代码告别截屏!

2. Promise

这一小节值得专门拿出来写一篇文章,尤其现在async/await已经成为JS的并发编程的标准。这里收集了一些Node端非常有用的Promise相关库:

pify - 转换callback形式为promise形式

目前有很多方法都可以把过时的callback-style的代码转成promise-style,但是pify可能是其中最好的解决方案。它体积很小,同时有util.promisify(node本地接口)没有的一些细节:比如方法自动绑定等。

p-map - 给并行设置限制数

并行虽然很好,但是大多时候出于带宽或者计算资源的考虑需要设置一个对并行的限制,这是p-map擅长的领域。它可以取代不支持限制并行的Promise.all()方法。

p-retry - 给promise请求添加重新请求机制

通常在发送http请求或者外部服务调用的时候可以用p-retry在外部封装一层,提高请求的健壮性。

p-timeout - 为promise请求添加超时处理

为promise请求指定一个超时时间,然后添加超时处理方案

3. 数据抓取

有很多很棒的抓取工具,有一些直接操作HTML,像cheerio,还有一个些可以模拟一个完整的浏览器环境像puppeteer。具体使用哪种工具还是要依赖使用场景。

cheerio - 快速、灵活和实现核心jQuery Api,服务于服务端

当你想操作HTML时,Cheerio非常适合快速 & 肮脏的web数据抓取。它提供了健壮的类jQuery语法,用来遍历和处理HTML文档。在抓取远程HTML文档时,Cheerio和下面要介绍的require-promise-native非常适合搭配一起使用。

puppeteer - Headless Chrome Node API

和cheerio不同,puppeteer是在headless Chrome(没有UI的Chrome,供服务端自动化测试用)外包装的一层高级API,通过开发工具协议控制headless Chrome或者Chromium,它也可以通过配置来使用全部Chrome或者Chromius的功能。

4. Node.js

dotenv-safe - 从.env里加载环境变量

这个模块扩展了非常流行的库dotenv,通过添加一个.env.example文件强制保证预期环境变量的存在。与原始版本一样,它为Node提供了快速的、安全的和健壮的环境变量。

request和request-promise-native - 简单的HTTP请求客户端

发送HTTP请求是一个极其常用的操作,常用的库是request-promise-native,它封装了request库,并提供了本地ES6的Promise支持。

consolidate - Node的模板引擎整合库

Consolidate可以非常漂亮的处理任何后端模板(email, html等等)。它提供了简单、稳定的各种模板引擎接口。

execa - 更好的child_process

在需要执行shell命令或者spawn一个子进程时极其有用

fs-extra - 更好的fs,拥有更多方法和Promise支持

5. 数学

d3-random - 生成各种分布的随机数

d3-ease - 产生流畅动画的Easing函数

6. 测试

ava - 很棒的JS test runner

Ava是比较新的JS单元测试工具,它具有众多JS测试库(Mocha、tape、chai和其他库)的优点,默认情况下采用并行运行的方式。

nock - HTTP模拟请求

Nock是一个很棒的测试HTTP请求的库。如果你的Node模块需要发送HTTP请求,并且你想要对这个请求做单元测试,那么nock是你的不二之选。

原文发布于微信公众号 - 代码拾遗(gh_8f61e8bcb1b1)

原文发表时间:2018-04-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏逸鹏说道

webp图片实践之路

最近,我们在项目中实践了webp图片,并且抽离出了工具模块,整合到了项目的基础模板中。传闻IOS10也将要支持webp,那么使用webp带来的性能提升将更加明显...

4979
来自专栏地方网络工作室的专栏

Vue2+VueRouter2+Webpack+Axios 构建项目实战2017重制版(九)再把内容页面渲染出来

Vue2+VueRouter2+Webpack+Axios 构建项目实战2017重制版(九)再把内容页面渲染出来 前情回顾 在上一篇博文《Vue2+VueRou...

22010
来自专栏吾爱乐享

php学习之html标签-超链接属性(四)

1954
来自专栏张戈的专栏

WordPress静态缓存三剑客,强力推荐!

之前一直用的 wp-super-cache,效果确实非常不错!网络不出问题的话,页面基本秒开。可惜,这款插件有时候会缓存我的手机主题,导致在电脑上浏览时,呈现的...

4635
来自专栏Jack-Cui

Jetson TX1开发笔记(二):TX1开发前必做的几件事

嵌入式平台: Jeston TX1     在上篇博客中,博主已经使用Jetpack3.0为Jetson TX1刷了最新的系统。但是,在开发前,个人感觉有几个...

3376
来自专栏FreeBuf

漏洞追踪:最新IE UXSS漏洞技术分析

最近David Leo在Full Disclosure上爆出了一个ie的 uxss 漏洞,可以绕过ie的同源策略。FreeBuf也有相关的报道(点我查看)。本文...

2037
来自专栏王小雷

Oracle数据仓库创建教程

Oracle数据仓库创建教程。如何创建一个数据仓库,创建实例,以为毕业设计要求,最近开始Oracle的数仓建模实践,详细记录了图形界面下的 Oracle dat...

2805
来自专栏云飞学编程

Python爬虫技巧!网站有反爬?我们有selenium!

框架底层使用JavaScript模拟真实用户对浏览器进行操作。测试脚本执行时,浏览器自动按照脚本代码做出点击,输入,打开,验证等操作,就像真实用户所做的一样,从...

5621
来自专栏Wordpress专用主机|主题模板|必备插件

腾讯云服务器如何安装宝塔面板

对于很多wordpress爱好者来讲,会优先选择服务器而不是虚拟主机。毕竟服务器在性能以及可控性上很不小的优势。

3.2K10
来自专栏乐百川的学习频道

Visual Studio Code介绍

应该有很多人都知道Atom编辑器吧,它是由Github开发的一个跨平台的编辑器。它使用了跨平台的Electron,用前端技术编写图形界面。一开始我也推荐过这个编...

2825

扫码关注云+社区

领取腾讯云代金券