obs-router
v2.0.5
Published
Mutable observable abstraction of url as route with parameters **Deprecated in favor of [routeemitter](https://github.com/zenflow/routeemitter)**
Downloads
10
Maintainers
Readme
obs-router
Mutable observable abstraction of url as route with parameters Deprecated in favor of routeemitter
description
ObsRouter provides a two-way mapping between urls (rather pathname + query) and named routes with parameters, given a named set of pathname patterns.
Instances are EventEmitters & optionally (& by default) bind to document location in the browser, using html5-history polyfill.
Also exposes static methods, routeToUrl
and urlToRoute
, which both take the patterns as their first argument.
Uses route-parser to match and obtain parameters from pathnames, and node native 'querystring' for query parameters.
Check out the documentation.
links
installation
npm install --save obs-router
example
var ObsRouter = require('obs-router');
var presenter = require('./presenter');
var api = require('./api');
var router = new ObsRouter({
home: '/',
blog: '/blog(/tag/:tag)(/:slug)',
contact: '/contact'
}, {
//bindToWindow: false, // would prevent binding to document location on the browser
initialEmit: true // cause to emit events after nextTick even though nothing has changed
});
router.on('route', function(route, params, old_route, old_params){
presenter.updatePage(route, params);
});
router.on('blog', function(params){
if (params){
if (params.tag){
api.getBlogsByTag(params.tag).then(function(blogs){
presenter.updateBlogQuery(blogs);
});
} else if (params.slug){
api.getBlogBySlug(params.slug).then(function(blog){
presenter.updateBlog(blog);
});
}
}
});
changelog
2.0.5
- Fixed readme
- Deprecated
2.0.4
- One dependency for lodash utilities
2.0.3
- Added commit task to docs gulpfile using gh-pages-commit
2.0.2
- Improved documentation
- fixed google analytics for docs
2.0.1
- Improved documentation
- fixed package.json scripts.test command for unix