NPM常用模块功能学习

在看别人写的Nodejs工具,对于里面的那些模块有点晕,搜一下这些常见的模块学习一下,以便了解它们的功能以及使用例子,方便自己快速读懂别人的代码。 常用npm模块一览

模块名 作者 简介
async caolan 异步操作管理
bl rvagg 二进制数据解析
bluebird petkaantonov 异步操作管理
browserify substack 发布浏览器可用的包
bunyan trentm 日志(logging)管理
chai jakeluer 断言
chalk sindresorhus 命令行彩色输出
co tjholowaychuk 异步流程管理
colors marak 命令行彩色输出
commander tjholowaychuk 命令行工具
debug tjholowaychuk Debug输出器
dockerode apocas Docker管理
duplexify mafintosh Stream流操作工具
event-stream dominictarr Stream流操作工具
express tjholowaychuk Server服务器框架
glob isaacs 文件名匹配
grunt cowboy 构建工具
gulp contra 构建工具
hapi hueniverse Server服务器框架
hyperquest substack 轻量级HTTP客户端
istanbul gotwarlost 测试用例覆盖率分析
JSONStream dominictarr Stream流管理工具
koa tjholowaychuk Server服务器框架
levelup rvagg LevelDB
lodash jdalton 函数式编程工具
log4js nomiddlename 日志(logging)管理工具
minimatch isaacs 文件名匹配
minimist substack 命令行操作
mocha tjholowaychuk 单元测试
moment timrwood 日期时间输出
mongodb christkv MongoDB
mysql felixge MySQL
nconf indexzero 配置工具
needle tomas 轻量级HTTP客户端
node-fetch bitinn Fetch API
nodemailer andris9 Email客户端
passport jaredhanson 登录和认证
pg brianc Postgres
pump mafintosh Stream流管理工具
redis mjr Redis
request mikeal HTTP客户端
restify mcavage REST API搭建
socket.io rauchg WebSocket实时通信
split2 matteo.collina Stream流管理工具
tape substack 单元测试
through2 rvagg Stream流管理工具
underscore jashkenas 函数式编程工具
ws einaros Websockets
xml2js leonidas XML转换为JavaScript
其中,有一个NPM工具,今天先来看看官方文档单纯的介绍看不懂是怎么出来的。 那就是minimist,命令行参数解析。官方文档例子如下:
var argv = require('minimist')(process.argv.slice(2));
console.dir(argv);
$ node example/parse.js -a beep -b boop
{ _: [], a: 'beep', b: 'boop' }
$ node example/parse.js -x 3 -y 4 -n5 -abc --beep=boop foo bar baz
{ _: [ 'foo', 'bar', 'baz' ],
  x: 3,
  y: 4,
  n: 5,
  a: true,
  b: true,
  c: true,
  beep: 'boop' }
我不太明白这个2是从哪个地方取的? 后来看别人的一个解释才知道。原来是这样子。 假如在命令行中输入以下命令。
node index.js --beep=boop -t -z 12 -n5 foo bar
Node.js 程序启动后可以直接从process.argv中读取到参数列表:
console.log(process.argv);
// ['/bin/node', '/tmp/index.js', '--beep=boop', '-t', '-z', '12', '-n5', 'foo', 'bar']
从上述代码中可以看到,process.argv 变量是一个数组,数组前两项分别是 node 程序位置和js脚本位置,数组中随后的元素都是我们启动Node.js后的参数,这些参数以空格分隔成数组。 虽然从 process.argv 中可以得到启动参数列表,但是我们仍需要对参数进行进一步解析处理才行。 所以才有了上面的这个minimist模块,方便解析路径的参数。