专栏首页代码拾遗那些值得一用的JS库

那些值得一用的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)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

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

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Spring Cloud 教程 - Eureka Server

    将groupId 为 org.springframework.cloud,artifactId 为spring-cloud-starter-netflix-eu...

    代码拾遗
  • ​SpringMVC 教程 - Handler Method

    由注解@RequestMapping注解修饰的处理请求的函数的签名非常的灵活,可以使用controller函数支持的一系列参数和返回值。

    代码拾遗
  • 8个关键的应用性能指标

    应用性能指数或者Apdex分数,已经变成追踪应用反应性能的工业标准。 通过定义指标:一个指定的web请求或者事务达到这个指标的时间是多久。 这些事务可以被分为满...

    代码拾遗
  • 太吾绘卷多分支选择的一些代码实现方式

    最近有一款国产游戏『太吾绘卷』很火。这个游戏怎么归类比较麻烦,从整体上来说,这是款『文字冒险类』游戏,而它的文案数值以及系统水平很高。

    沙因Sign
  • HTTP之跨域预请求options

    然后node server.js,打印出listen port 300表示启动成功,接着写一个Ajax请求:

    wade
  • 金山银山,扛不住代码“屎山”……

    在知乎里,有一个充满味道而且很有意思的提问,引发了无数专业人士的吐槽: ? 问题中提到了“祖传代码”,顾名思义就是前辈留下来的代码。 随着系统的不断更新迭代...

    腾讯NEXT学位
  • 当我们谈论Unit Test时我们在谈论什么?

    直译:面向独立单元的测试方法。 单单这一句话我们心里有就有了疑问:什么是独立单元,或者什么样的代码才算一个独立单元? 为了回答这个问题,这里引用一下wikipe...

    小老鼠
  • HTML5 - 开发一个自己的websocket服务器

    https://github.com/sitegui/nodejs-websocket#how-to-use-it

    xing.org1^
  • 动态 | 「词嵌入」和「注意力」的新发现获得CoNLL 2018最佳论文奖

    AI 科技评论按:国际语言学会(ACL)下属的 SIGDAT 小组主办的自然语言处理顶级会议 EMNLP 2018 即将于 10 月 31 日到 11 月 4 ...

    AI科技评论
  • 程序员如何才算真正的高效编程?

    软件工程师为了准备面试,常常需要花费大量时间练习编程问题,同时还需要完善简历。然而,当他们最终拿下创业公司、谷歌、亚马逊或其他公司的工作后,才发现辛辛苦苦积累...

    腾讯大讲堂

扫码关注云+社区

领取腾讯云代金券