高峰之巅 发表于 2017-2-23 11:26:45

Node.js[1] 俯瞰NPM



[*]Node.js connect & express简介
[*]Node.js 第一个模块
[*]Node.js 俯瞰API (整理中)
[*]Node.js Hello Node
[*]Node.js 俯瞰NPM
[*]Node.js 简介

  上篇提到,node本身只提供实现应用程序的精简api集合。NPM(Node Packaged Module,以下简称模块)是node内置功能,目的在于让node具有可扩展性。本文不深入讲解模块的实现细节,会在后续《第一个node模块》中详述;下文详细介绍NPM Registry的模块现状。
  这篇文章用到的数据如无特指,均来自2012-11-18
   Nodejs.org
  先简单了解下nodejs.org的各个子页面(或子站点):


[*]Homepagenode官网主页,简介+demo
[*]Download各平台node安装包下载页
[*]About node简介,推荐底部的slide JsConf2009,JsConf2010
[*]NPM RegistryNPM库
[*]DocsAPI文档
[*]Blog目前就是个node更新日志列表
[*]Community node社区入口,分类罗列了各种资源
  概念上应该将NPM放在Community内;单列出来,可以看到NPM在node生态环境中的重要地位。事实也是如此,没有NPM就没有node的今天,这话一点不假;只有Ryan一个人的努力,就算能把node写得天花烂醉,也不可能把如此庞大丰富的NPM库写出来。
NPM Registry
  NPM Registry(NPM库)提供模块的查询、数据统计、评论等功能。评论需要登陆,命令行首次使用npm publish时按照提示注册(详细使用方法请参见NPM docs);也可以在这个站点注册。
数据统计
  NPM Registry首页就是一堆模块统计列表(暂且叫榜单)构成的。从上至下依次列出了:


[*]模块历史下载记录(Node Packaged Modules)
[*]最近上传模块(Recently Updated),每个模块都有亮相的机会,很温馨!
[*]最多依赖模块(Most Depended Upon)
[*]最受欢迎模块(Most Starred)
[*]最高产作者(Most Prolific Authors)
  最多依赖模块和最受欢迎模块是衡量模块质量的2个重要榜单;这里面的部分模块也会在后续文章中反复提到;“最高产作者”中的tjholowaychuk(以后多用TJ简称,connect、express、jade、mocha等一堆高质量模块的作者)、isaacs等今后也会多次提及。
  通过看这些榜单,可以对node有直接的感受;以最多依赖模块为例:

[*]1698 underscore util库,Backbone.js项目的一部分
[*]1033 request Http request method
[*]1002 async 用同步的代码风格写异步代码
[*]935 coffee-script
[*]832 express 轻量Web App Framework,基于connect
[*]812 optimist 命令行辅助
[*]634 commander 命令行辅助
[*]571 colors 命令行着色辅助
[*]436 uglify-js 压缩
[*]421 connect Http Server中间件库
  单从这份榜单就能看到各种util、app框架、编译器等,种类繁多。

模块分类
  NPM Registry已经有接近18000个模块,要想完整的做一个分类显然力不从心,这里仅参考最多依赖模块top100。类别比较难定,暂定为2级,诸君有好的分类方法请指教。
类别1 类别2 模块 通用库 JS语言扩展 underscore xml2js lodash momentunderscore.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 pkginfosemver 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  吐血
页: [1]
查看完整版本: Node.js[1] 俯瞰NPM