Node.js[1] 俯瞰NPM

上篇提到,node本身只提供实现应用程序的精简api集合。NPM(Node Packaged Module,以下简称模块)是node内置功能,目的在于让node具有可扩展性。本文不深入讲解模块的实现细节,会在后续《第一个node模块》中详述;下文详细介绍NPM Registry的模块现状。

这篇文章用到的数据如无特指,均来自2012-11-18

Nodejs.org

先简单了解下nodejs.org的各个子页面(或子站点):

概念上应该将NPM放在Community内;单列出来,可以看到NPM在node生态环境中的重要地位。事实也是如此,没有NPM就没有node的今天,这话一点不假;只有Ryan一个人的努力,就算能把node写得天花烂醉,也不可能把如此庞大丰富的NPM库写出来。

NPM Registry

NPM Registry(NPM库)提供模块的查询、数据统计、评论等功能。评论需要登陆,命令行首次使用npm publish时按照提示注册(详细使用方法请参见NPM docs);也可以在这个站点注册

数据统计

NPM Registry首页就是一堆模块统计列表(暂且叫榜单)构成的。从上至下依次列出了:

最多依赖模块最受欢迎模块是衡量模块质量的2个重要榜单;这里面的部分模块也会在后续文章中反复提到;“最高产作者”中的tjholowaychuk(以后多用TJ简称,connect、express、jade、mocha等一堆高质量模块的作者太棒了)、isaacs等今后也会多次提及。

通过看这些榜单,可以对node有直接的感受;以最多依赖模块为例:

  1. 1698 underscore util库,Backbone.js项目的一部分
  2. 1033 request Http request method
  3. 1002 async 用同步的代码风格写异步代码
  4. 935 coffee-script
  5. 832 express 轻量Web App Framework,基于connect
  6. 812 optimist 命令行辅助
  7. 634 commander 命令行辅助
  8. 571 colors 命令行着色辅助
  9. 436 uglify-js 压缩
  10. 421 connect Http Server中间件库

单从这份榜单就能看到各种util、app框架、编译器等,种类繁多。

 

模块分类

NPM Registry已经有接近18000个模块,要想完整的做一个分类显然力不从心,这里仅参考最多依赖模块top100。类别比较难定,暂定为2级,诸君有好的分类方法请指教。

类别1 类别2 模块
通用库 JS语言扩展 underscore xml2js lodash moment  underscore.string jquery sprintf minimatch hook.io browserify eventemitter2 cheerio validator
canvas requirejs traverse dateformat
  JS流程控制 async q step seq
  模板类 jade ejs mustache handlebars js-yaml hogan.js eco
  CSS less stylus nib
  命令行辅助 optimist commander colors nopt nconf prompt cli nomnom cli-color
  调试辅助 debug winston eyes jsdom
  部署 uglify-js grunt clean-css jshint
  其他 coffee-script node-uuid mime pkginfo  semver marked npm sax esprima through growl htmlparser superagent
IO库 网络IO request connect socket.io oauth qs formidable nodemailer http-proxy passport-oauth ws restler socket.io-client node-static dnode passport
  本地IO wrench glob mkdirp rimraf watch findit event-stream log4js bindings temp fstream
  数据库IO redis mongodb mongoose mysql hiredis knox pg
框架 应用框架 express backbone
  测试框架 mocha qunit vows should nodeunit

吐血生病

posted @ 2012-11-18 16:33  Luics  阅读(3889)  评论(2编辑  收藏  举报