Skip to content

Mike96Angelo/BrowserRouter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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?';
    }
}

About

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

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published