在看别人写的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 = processargv;
consoledirargv;
$ 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模块,方便解析路径的参数。
