2.0.5 • Published 3 years ago

urout v2.0.5

Weekly downloads
4
License
ISC
Repository
github
Last release
3 years ago

Universal Router

Start developing server/browser apps in seconds

Fast, unopinionated, minimalist browser and server Router ;)

A router version of express built with polka and based heavily on trouter.

Features

  • Lightweight - less than 1.7kb min+gzip
  • No Dependency - No Bloating. No external dependencies
  • Node/Browser compatible code - Use the same code for server and browser
  • Express.js Middleware compatible - Middleware support, including Express middleware you already know & love
  • Express.js identical API - Nearly identical application API & route pattern definitions

Install

$ npm install --save urout

Usage

Browser

const urout = require("urout");
function getRouter({
	onError = (err, req, res) => {
		res.end(err);
	},
	onNoMatch = (req, res, next) => {
		res.end("no match");
	},
} = {}) {
	return new urout.Router({ onError, onNoMatch });
}

let res = {
	end: (chunk, cb) => {
		console.log(chunk);
	},
};

let app = getRouter();
let users = getRouter().get("/", (req, res) => {
	res.end("users!");
});
app.use((req, res, next) => {
	console.log("mid");
	next();
})
	.use("users", users)
	.get("/", (req, res) => {
		res.end("root");
	})
	.get("/err", (req, res) => {
		throw "e";
	});

app.handler({ method: "GET", url: "/" }, res);
app.handler({ method: "GET", url: "/err" }, res);
app.handler({ method: "GET", url: "/nomatch" }, res);
app.handler({ method: "GET", url: "/users" }, res);

Node.js

const urout = require("urout");
const http = require("http");

class Server extends urout.Router {
	constructor(opts) {
		super(opts);
		this.server = opts && opts.server;
	}

	listen(port, err) {
		(this.server = this.server || http.createServer()).on(
			"request",
			this.handler
		);
		this.server.listen.apply(this.server, arguments);
	}
}

function getRouter({
	onError = (err, req, res) => {
		res.end(err);
	},
	onNoMatch = (req, res, next) => {
		res.end("no match");
	},
} = {}) {
	return new Server({ onError, onNoMatch });
}

let app = getRouter();
let users = getRouter().get("/", (req, res) => {
	res.end("users!");
});
app.use((req, res, next) => {
	console.log("mid");
	next();
})
	.use("users", users)
	.get("/", (req, res) => {
		res.end("root");
	})
	.get("/err", (req, res) => {
		throw "e";
	})
	.listen(3000);

Look for more usage in examples folder for node.js API server, express middleware and browser implementation.

API

License

MIT © Kethan Surana

2.0.3

3 years ago

2.0.2

3 years ago

2.0.5

3 years ago

2.0.4

3 years ago

2.0.1

3 years ago

2.0.0

3 years ago

1.0.8

5 years ago

1.0.7

5 years ago

1.0.6

5 years ago

1.0.5

5 years ago

1.0.4

5 years ago

1.0.3

5 years ago

1.0.2

5 years ago

1.0.1

5 years ago

1.0.0

5 years ago