browser-app-router

1.1.1 • Public • Published

BrowserRouter

GitHub release npm version npm downloads npm downloads

A simple URL router for the browser, uses the browser history API falls back to hash-urls.

Install:

$ npm install browser-app-router

What BrowserRouter Looks Like

app.js:

var BrowserRouter = require('browser-app-router');
 
var router = new BrowserRouter({
    mode: 'hash', // 'hash'|'path' defaults to 'path'
    root: '/path/to/app' // only applies if mode is set to 'path'
});
 
router.addRoute({
    title: 'App - Home', // document.title is set to this value when this route is loaded.
    path: '/',
    handler: function (req) {
        // handle route here
        // req => {
        //   title: 'title of route',
        //   fullPath: '/path/of/route?foo=bar#bar=baz'
        //   path: '/path/of/route'
        //   params: {key => value},
        //   searchString: '?foo=bar',
        //   search: {foo: 'bar'},
        //   hashString: '#bar=baz',
        //   hash: {bar: 'baz'},
        // }
 
        // to redirect a route simply call router.go('/redirect/path')
 
        // return false to cancel url change
    }
});
 
router.addRoute({
    title: 'App - User',
    path: '/{username}', // req.params => {username => value}
    // path: '/user/{username*}', // matches paths /user/*
    // path: '/user/{username*2}', // matches paths /user/{foo}/{bar}
    // path: '/user/{username?}', // matches paths /user|/user/{foo}
    handler: function (req) {
        // handle route here
    }
});
 
router.set404({
    title: 'App - 404',
    handler: function (req) {
        // handle 404 here
    }
});
 
router.start();
// this inits the router and load the route at the current url.
 
router.reload();
// this reload the route at the current url without changing history.
 
router.go('/path/to/route?search=search#hash=hash');
// loads the route with the given url string.
 
router.go404();
// loads the 404 route with the current url.
 
 
// return a message if a user should be warned about leaving the page.
// NOTE: this will not prevent the user from leaving if the choose to leave.
// event is the beforeunload event if user manually changes the url.
router.beforeRouteChange = function (event) {
    if (unsavedChanges) {
        return 'You have unsaved changes, are you sure you want to leave?';
    }
}
 

Package Sidebar

Install

npm i browser-app-router

Weekly Downloads

2

Version

1.1.1

License

MIT

Last publish

Collaborators

  • mike96angelo