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