yargsyargs是一个用于处理命令行参数的包,它可以帮助您处理自定义命令行标志和输入的任何类型的数据,包括布尔值、浮点数和字符串等.这个包非常简单,不需要您在项目中编写大量样板代码。yargs可以帮助你处理“usagehelp”输出,它可以很容易地告诉用户在使用你的程序时需要输入哪些选项,包括哪些是必须的。varargv=require('yargs').usage('用法:$0-x[num]-y[num]').demand(['x','y']).argv;console.log('Pow(x,y):',Math.pow(argv.x,argv.y));将以上代码保存为index.js,然后在命令行执行nodeindex.js-x3,你会看到如下信息:Usage:index.js-x[num]-y[num]Options:-x[required]-y[required]Missingrequiredargument:yyargs可以提示我们命令行中缺少哪些参数,我们只需要简单地调用。usage()和.demand()方法可以解决问题。toobusy这是一个非常有用的包。它轮询Node事件循环并跟踪完成请求需要多长时间,如果发现延迟太长,toobusy会通知您,以便您可以向客户端返回HTTP503“服务不可用”状态代码.这个处理很重要,因为服务器越忙,请求等待的时间就越长。这很快就会成为一个复杂的问题,并随着时间的推移变得更糟。如果放手,服务就会崩溃。如果我们能够及时停止一些请求的处理并返回HTTP503,至少可以处理一些请求。您可以使用npm命令轻松安装toobusy:npmintaltoobusy,然后将其与Express之类的东西集成:vartoobusy=require('toobusy'),express=require('express');varapp=express();//如果服务器太忙压力太大会阻塞请求=app.listen(3000);process.on('SIGINT',function(){server.close();toobusy.shutdown();//正常退出process.exit();});无需编写太多代码,无需过多配置即可继承到我们自己的项目中。chalk很难在命令行上开发出有用的用户界面,因为只有命令行窗口用于与用户交互。那么如何提示一些重要的信息呢?向输出文本添加格式是一个好方法。快递就是一个典型的例子。从它的输出中,您可以轻松阅读和找到重要信息。以下是chalk支持的样式列表:modifiersboldunderlinedimresethiddeninverseitalic(不支持所有环境)strikethrough(不支持所有环境)colorsredblackgreenwhiteyellowblue(更亮的版本将在Windows上使用,因为普通的蓝色很难看懂)cyangraymagenta背景颜色bgBluebgBlackbgRedbgGreenbgCyanbgYellowbgWhitebgMagenta虽然官方只支持这些颜色,但是任何符合xterm标准的终端都可以使用完整的8位颜色代码。这些文本可以很容易地格式化,只需将字符串传递给函数进行着色或格式化。如果需要让用户注意到严重错误,可以使用以下格式:varchalk=require('chalk');varstr=chalk.red.bold('ERROR:')+chalk.bold('Everythingjustblewup...');console.log(str);node-inspector很难找到好的调试器,尤其是那些具有良好GUI的调试器,node-inspector为您提供了一个WebGUI来帮助调试您的代码。它具有标准调试器的所有功能,如断点、单步执行、退出代码、变量检查等,加上一些不太常用但非常有用的功能,如CPU和堆分析、网络客户端请求检查的能力并实时编辑运行代码。node-inspector但是node-inspector只与Chrome和Opera兼容,因为它使用Blink开发者工具并且与Node.js兼容。我一直严重依赖控制台输出进行调试,这会花费很多时间。使用GUI可以大大节省调试时间。terminal-kit如果你的Node程序需要支持命令行上简单的文本输入输出以外的操作,那么你应该需要terminal-kit。terminal-kit简化了与用户交互的许多事情,使您可以专注于开发程序中的重要内容。终端工具包的主要功能是:文本样式(很像粉笔)编辑屏幕进度条用户输入有很多适用于终端工具包的示例。例如,如果您需要从网络上下载一些东西,您需要向用户显示一个进度条。以下代码用于显示一个虚拟进度条:varterminal=require('terminal-kit').terminal;varprogressBar;varprogress=0;functionupdateProgress(){//生成一个随机进度值progress+=Math.random()/10;progressBar.update(progress);//检查if(progress>=1){setTimeout(function(){terminal('\n');process.exit();},250);}else{setTimeout(updateProgress,100+Math.random()*500);}}progressBar=terminal.progressBar({width:80,title:'Downloadingfile:',eta:true,percent:true});updateProgress();上面的代码会产生如下效果:terminal-kitprogressbarvalidator验证器可以帮你进行一系列常见的字符串验证(eg:邮箱地址、电话号码、IP地址等)。任何时候你从用户那里得到输入,像这样的包都是必不可少的。用户会犯错误并在文本框中键入非常奇怪的内容,因此需要一个验证输入的包来避免数据损坏或服务器崩溃。以下是一些常用的验证器:isEmail(str[,options])isIP(str[,version])isMobilePhone(str,locale)isURL(str[,options])验证器还提供检测器,可以检查输入字符串Normalize,删除或转义。示例包括清理用户提交的内容以防止他们输入恶意的HTML或JavaScript代码。以下是常用的检测器:blacklist(input,chars)escape(input)normalizeEmail(email[,options])whitelist(input,chars)normalizeEmail()method可以保证邮件地址全部为小写字母,甚至可以去掉要忽略的必需字符。假设您有电子邮件abc.def+ghi@163.com,normalizeEmail()会将其规范化为abcdefghi@163.com。formidableformidable可以帮助您处理文件上传的每一步,包括多部分解析器、将文件写入磁盘和错误处理。如果您不想重新发明轮子,这是我最喜欢尝试的包包之一。这是在普通HTTP服务器上使用formidable的示例,代码是根据包本身给出的示例修改的:varhttp=require('http');varutil=require('util');varformidable=require('formidable');varpath=require('path');varPORT=8080;varroot=path.join(__dirname,'../');exports.dir={root:root,lib:root+'/lib',fixture:root+'/test/fixture',tmp:root+'/test/tmp',};varserver=http.createServer(function(req,res){if(req.url=='/'){res.writeHead(200,{'content-type':'text/html'});res.end('
'+'
