这篇文章与大家分享优秀的 Node.js 中间件模块。Node 是一个服务器端 JavaScript 解释器,它将改变服务器应该如何工作的概念。它的目标是帮助程序员构建高度可伸缩的应用程序,编写能够处理数万条同时连接到一个(只有一个)物理机的连接代码。

JSGI

  • commonlogger - A logger of HTTP requests.

  • compact - Join and compress frontend javascript.

  • compress - Gzip compresses (using node-compress) the response when appropriate based on request headers.

  • conditional - Handles conditional HTTP requests (If-Modified-Since, etc.)

  • contentlength - Sets Content-Length header.

  • csrf - Checks HTTP request for possible cross-site request forgery, flags dangerous requests.

  • extension - Transforms .extension to a RESTful Accept header

  • head - Handles HEAD requests (stripping body).

  • http-params - Converts HTTP parameters http- to headers.

  • media - Performs content type negotiation (per RFC2616) delegating to appropriate media handler.

  • redirect - Redirects to other URLs

  • rewriter - Rewrites defined paths to other paths.

  • routes - Simple RegExp based router

  • session - Session manager with pluggable storage handling

  • static - Static file handler using asynchronous streaming.

  • transporter - Share modules with browser, works RequireJS and Yabble

  • urlmap - Maps to different apps by path/URL

  • xsite - Handles JSONP, window.name, and cross-origin XHR (CORS).

Connect

  • connect-jade-static - Serving jade files as static html

  • aspa-express - Simple, dependency-free middleware for serving assets packaged with aspa.

  • browserify-middleware - Middleware for serving up node.js code with requires to the client.

  • bundle-up — A simple asset manager middleware for managing css and js files.

  • client-certificate-auth - Basic TLS/SSL client certificate authentication

  • connect_facebook - Facebook session support for Connect

  • connect_json - Support for parsing JSON requests and sending JSON responses in Connect

  • connect-airbrake — Airbrake error reporting auto-setup middleware

  • connect-assetmanager - Asset manager for Connect for handling CSS/JS files

  • connect-assets - Compiled CSS/JS asset pipeline inspired by Rails 3.1

  • connect-auth — Connect authentication middleware, provides out-of-the-box implementations of HTTP (Basic & Digest), Twitter, Facebook, BitBucket, Janrain, Yahoo, Sina, Google, OAuth (1.0 server), Github and a couple of others....

  • connect-compiler — Development middleware to dynamically recompile derived files at serve-time.

  • connect-dojo — Connect middleware exposing the Dojo Toolkit

  • connect-domain — Asynchronous error handler for Connect

  • connect-force-domain — force all visitors onto a single domain

  • connect-gridfs — GridFS file server for Connect

  • connect-http-signature — middleware wrapper for Joyent's HTTP Signature reference implementation

  • connect-proxy — Retrieve originating ip/host values when proxying to your connect app

  • connect-roles — Dynamic roles based authorization for connect/express, designed to work well with passport and everyauth.

  • connect-rpx - Use RPX with Node.js and Connect

  • cookie-sessions — Secure cookie-based session store

  • dispatch — Regular expression URL dispatcher

  • everyauth — Connect authentication and authorization middleware, modular, configurable, supporting password, OpenId, Google, OAuth, Twitter, LinkedIn, Yahoo, Readability, Dropbox, Justin.tv, Vimeo, Tumblr, OAuth2, Facebook, GitHub, Instagram, Foursquare, Box.net, LDAP

  • express-chromeframe — Dead simple middleware to enable chromeframe on connect/express applications.

  • express-errors — Simple error handling

  • facebook-wrapper — Basic wrapper to the Facebook API, designed to work with Connect and Express

  • form2json — Decoder for form-urlencoded data that supports arrays of nested objects

  • formaline - full-featured module for handling form POSTs/PUTs (multipart/form-data, application/x-www-form-urlencoded ) and fast parsing of file uploads, it speaks JSON and it is also ready for use with middlewares like connect.

  • http-accept — Connect compatible middleware that parses HTTP Accept header fields

  • merge-js — Simple connect middleware for merging multiple js files and uglifying the result.

  • mincer — direct Sprockets assets manager port, with middleware for connect/express

  • minj — Serve minified javascript files with Connect/Express

  • monomi — Provides tools for handling tablet, touch, and mobile browsers

  • node_signedcookies — Extends Express's cookieParser() to read/write signed cookies.

  • node-facebook-session-cookie — eats facebook cookies from client FB.login() and makes the session available as req.fb_session

  • passport — Simple, modular, and unobtrusive authentication framework for Connect and Express.

  • pound — Pound is an high-level interface for Piler - The Awesome Asset Manager for Node.js

  • quip — Chainable HTTP response API

  • resource-router — A resource-oriented router to replace the default routing in express

  • resty — Quickly and simply build REST APIs with this connect middleware

  • session-web-sockets — Pass session to (Socket.IO-node) in a secure manner. Originally forked from bmeck/session-web-sockets

  • session.js — super simple session middleware for node.js, even has optional "magic" sessions which monkey patch the httpServer with one line!

  • Shrinkroute - Named routes for Express. Helps you in achieving DRY routes!

  • trust-reverse-proxy - Trust (SSL) connections coming from (a) specific reverse prox(y)(ies)

Other middleware

  • bouncy — bounce HTTP requests around for load balancing or as an HTTP host router

  • buffet — Performance-oriented static file server & middleware

  • dota2api — Dota2 api wrapper written in node.js

  • eventpipe — Provides an Event Pipe with the same API as node.js' EventEmitter

  • exedra — Express routes & functions loader

  • express-debug — Express middleware that provides a debugging/object browser panel injected into your application.

  • express-couch-proxy — CouchDB reverse proxy middleware for Express

  • express-twitter — Twitter-specific OAuth support

  • googleclientlogin — Log in to Google services using CllientLogin method

  • http-auth — Node.js package for HTTP basic and digest access authentication.

    • htdigest — Node.js package for HTTP Digest Authentication password file utility.

    • htpasswd — Node.js package for HTTP Basic Authentication password file utility.


  • http-auth2 — HTTP basic authentication that supports multiple logins.

  • http-proxy-selective — Proxy server replace some remote static files with local ones

  • middler — A middleware runner which can itself function as middleware, with routing

  • node-evented — Extended EventEmitter

  • node-file-cache - Very small file cache for node.js http server.

  • node-force-domain — Force multiple domains to redirect (301) to a default one in your Express project.

  • Node-Http-Rewrite-Proxy — This module proxies and rewrites HTTP requests of all types. For this you can, if you want, use regular expressions.

  • node-reverse-proxy — A reverse proxy which forwards incoming HTTP requests to multiple back-end HTTP servers based upon HTTP Host header.

  • node-varnish — Connector for the Varnish cache telnet management protocol

  • notp — NodeJS One Time Password authentication, compatible with Google Authenticator

  • onion — Simple and flexible middleware stack that enables you to add a middleware layer to just about anything

  • protobuf_for_node — In-process JS-to-C++ communication using protocol buffer services

    • protobuf — A fork of protobuf_for_node with an npm package.


  • proxy-tamper — A proxy server that allows for the tampering of requests and responses.

  • socket-logger — JSON-parsable logs for Socket.IO that can push log messages to a client over Socket.IO.

  • subproxy - subdomain proxy (for example to proxy www.google.com with www.google.com.localhost)

  • proxima - HTTP/TLS(HTTPS) reverse proxy forwards incoming requests to upstream servers based on Host header or SNI host hint.

  • express-cors - Simple middleware for adding CORS functionality to your expressjs app.