Client | ||
Server | ||
Shared | ||
.gitignore | ||
.tern-project | ||
index.mjs | ||
LICENSE | ||
logo-large.png | ||
logo.piskel | ||
logo.png | ||
package-lock.json | ||
package.json | ||
README.md |
powahroot
Client and server-side routing micro frameworks
Powahroot is a pair of micro routing frameworks, presented as an ES6 module:
- The first is for client-side single-page web applications
- The other is for handling server-side Node.js requests
It's based on rill
(see the npm package bearing the name), but stripped down and simplified.
Documentation is work-in-progress!
Getting Started
Install powahroot as a dependency with npm:
npm install --save powahroot
Then import
the router you're after:
import { ServerRouter } from 'powahroot';
import { ClientRouter } from 'powahroot';
Usage
Paths
Powahroot supports multiple syntax bells and whistles when defining routes. These are documented below:
Syntax | Meaning |
---|---|
/index.html |
Regular route. Matches exactly what it says on the tin. |
* |
Special key(word?) that matches any route. Must be present on its own without any other characters. |
/add/vegetable/:name/:weight |
Parameters. Match values an pull them into an object automatically. Does not like forward slashes in parameter values. |
/images/::path |
Parameter values with forward slashes. If you want to use parameters, but need values to be able to contain forward slashes / , this is for you. Don't forget you can mix-and-match this with the previous example! |
Client
Initialise a new router like this:
const router = new ClientRouter({
// Options object. Default settings:
verbose: false, // Whether to be verbose in console.log() messages
listen_pushstate: true, // Whether to react to browser pushstate events (excluding those generated by powahroot itself, because that would cause an infinite loop :P)
});
Server
TODO: Finish this section
Reference
TODO: Generate reference from code automatically
Licence
Everything in this repository except the logo is licenced under the _Mozilla Public License 2.0.
The logo itself is © Copyright Starbeamrainbowlabs 2019. All rights reserved - though you may use it when linking to this project (or to advertise usage in a 'powered by' logo).