一些小众却有用的 Node.js 包

作者:前端小混混 来源:前端先锋
yargs
yargs 是一个用来处理命令行参数的包,可以帮你处理自行设置的命令行标志和输入的任何类型的数据,其中包括布尔值、浮点数和字符串等 。这个包非常简单明了,不需要在项目中编写大量的样板代码 。

一些小众却有用的 Node.js 包

文章插图
 
yargs 能够帮你处理 “用法帮助” 输出,可以轻松地告诉用户在使用你程序时需要输入哪些选项,包括哪些是必选的 。
var argv = require('yargs')
.usage('Usage: $0 -x [num] -y [num]')
.demand(['x','y'])
.argv;
 
console.log('Pow(x, y):', Math.pow(argv.x, argv.y));
把上面的代码保存为 index.js,然后在命令行中执行 node index.js -x 3,会看到如下消息:
Usage: index.js -x [num] -y [num]
 
Options:
-x [required]
-y [required]
 
Missing required argument: y
yargs 能够提示我们命令行中到底缺少什么参数,而我们只需要简单的调用 .usage()和 .demand() 方法就行了 。
toobusy
这是一个非常实用的包 。它轮询 Node 事件循环并跟踪完成请求所需的时间,如果发现延迟时间太长,则 toobusy 会通知你,然后你就可以将 HTTP 503 "Service Unavailable" 状态码返回给客户端 。
这种处理是很重要的,因为服务器越忙,请求所等待的时间也就越长 。这很快就成为一个很复杂的问题,随着时间的流逝会越来越严重 。如果你听之任之的话,那么服务将会崩溃 。如果我们能及时的停止一些请求的处理,并返回 HTTP 503,这样的话至少还能处理一些请求 。
可以轻松的用 npm 命令安装 toobusy:
npm install toobusy
然后把它和类似 Express 的东西集成在一起:
var toobusy = require('toobusy'),
express = require('express');
 
var App = express();
 
// 如果服务器压力过大将会阻止请求
app.use(function(req, res, next) {
if (toobusy()) {
res.send(503, "Too many users!");
} else {
next();
}
});
 
var server = app.listen(3000);
 
process.on('SIGINT', function() {
server.close();
toobusy.shutdown(); // 正常退出
process.exit();
});
不需要写多少代码,也不用太多的配置就能集成到我们自己的项目中 。
chalk
在命令行上很难开发出一个好用的用户界面,因为用于和用户交互的只是命令行窗口 。那么你该如何去提示一些重要的信息呢?在输出的文本中添加格式不失为一种好方法 。Express 就是一个很典型的例子,从它的输出中,你可以很轻松地快速找到重要的信息 。
以下是 chalk 支持的样式列表:
修饰符bold
  • underline
  • dim
  • reset
  • hidden
  • inverse
  • italic (并非所有环境都支持)
  • strikethrough (任何环境下都不支持)
颜色
  • red
  • black
  • green
  • white
  • yellow
  • blue (在 windows 上会使用较亮的版本,因为普通的蓝色很难辨认)
  • cyan
  • gray
  • magenta
背景颜色
  • bgBlue
  • bgBlack
  • bgRed
  • bgGreen
  • bgCyan
  • bgYellow
  • bgWhite
  • bgMagenta
虽然官方只支持这些颜色,但是任何符合 xterm 标准的终端都可以使用完整的 8 位色代码 。
只需要将字符串传给用于着色或格式化的函数就能轻松的格式化这些文本 。如果你需要让用户注意到严重错误提示,可以用下面的格式:
var chalk = require('chalk');
 
var str = chalk.red.bold('ERROR: ') + chalk.bold('Everything just blew up...');
console.log(str);
node-inspector
好用的调试器很难找,尤其是那些带有好用的 GUI 的调试器,node-inspector 为你提供了一个网页 GUI 来帮助调试代码 。它有标准调试器的所有功能,例如断点、单步执行、退出代码以及变量检查等,另外还有一些不太常用的功能,但是这些功能非常有用,例如 CPU 和堆分析、网络客户端请求检查以及实时编辑运行代码的功能 。
不过 node-inspector 只与 Chrome 和 Opera 兼容,因为它使用了Blink Developer Tools,并与Node兼容 。
一直以来我非常依赖控制台输出进行调试,这会花费了大量的时间 。使用 GUI 能够大大的节省调试时间 。


推荐阅读