express.js
var parseUrl = require('parseurl');exports = module.exports = createApplication;function createApplication() { var app = function (req, res, next) { app.handle(req, res, next); }; app.stack = []; app.handle = function handle(req, res, callback) { var idx = 0, match = false; var path = getPathname(req); while (match !== true && idx < this.stack.length) { layer = this.stack[idx++]; match = layer.path === path; layer.handle(req, res, callback); } }; app.use = function use(fn, mid) { var path = '/', newFn = fn; if (typeof fn !== 'function') { path = fn; newFn = mid; } var layer = new Layer(path, newFn); this.stack.push(layer); return this; }; return app;}// get pathname of requestfunction getPathname(req) { try { return parseUrl(req).pathname; } catch (err) { return undefined; }}function Layer(path, fn) { this.handle = fn; this.path = path;}
执行app.js
var express = require('./lib/express');var http = require('http');var app = new express();app.use('/12', function (req, res, next) { console.log('success1');});app.use('/13', function (req, res, next) { console.log('success2');});var httpServer = http.createServer(app);httpServer.listen('80');