开发者社区> 镜像站> NPM> singleton-router
singleton-router
Tiny singleton router for the browser
Last updated 3 years ago by yerkopalma .
MIT · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install singleton-router 
SYNC missed versions from official npm registry.

singleton-router


API stability Standard Build Status

Install

$ npm install --save singleton-router

or

<script type="text/javascript" src="https://unpkg.com/singleton-router@2.0.0/dist/bundle.min.js"></script>

Usage

import SingletonRouter from 'singleton-router'

const router = SingletonRouter()
// each view is a function that returns an htmlElement object
router.addRoute('/', HomeView)
// callback is fired after new element (view) is mounted
router.addRoute('/about', AboutView, () => { console.log('Content mounted to DOM') })
router.addRoute('/user/:id', UserView)
// starting route
router.setRoot('/')
// element to mount router, if not set will mount on body element
router.start('#app')

In your html, any clickeable element with an attribute data-route would navigate to the route specified there. So, for example, an anchor tag like <a data-route="/about">about</a> will navigate to the AboutView. Programatic navigation can be done with the router.goToPath function.

API

const router = SingletonRouter([options])

There is a single function exposed, the function returns the instance of the router. The instance is also saved to the global window object as RouterInstance_. It accepts an optional options object, the availaible options are:

  • onRender(currentView, previousView, cb): By default, the router use the replaceChild function to render the view, you can replace it to add animations, or use some html diffing function to improve performance. Notice that the function is ran inside a requestAnimationFrame call, so don't need to include it yourself. Also, when defined, you get a third parameter, that's the callback defined on each addRoute method.
  • onNavClick(path, element): If provided, is executed after any element with the data-route attribute in it. Useful to mark active links in navigation menus.

router.setStore(store)

Set a store container, like redux for example. This store is passed to each view.

router.addRoute(path, view [, callback])

Add routes to the router. The arguments are:

  • path: A string with the path of the route.
  • view: A function that returns an HtmlElement, the function hast two arguments:
    • params: The value of the params for that route.
    • store: the store object set before by router.setStore.
    • callback: Optional function that runs after the view is rendered to the DOM. Note that if you define a onRender function, then you MUST handle yourself this callback.

router.setRoot(path)

Set a starting route

router.goToPath(path [, title])

Programmatically navigates to a route. Optionally add a title for the history api.

router.start([selector])

Start the router. This function receive a selector to mount the app, if none is provided, it will replace and update the body od the document.

Licencia

MIT © Yerko Palma.

Current Tags

  • 2.0.1                                ...           latest (3 years ago)

11 Versions

  • 2.0.1                                ...           3 years ago
  • 2.0.0                                ...           4 years ago
  • 1.4.2                                ...           4 years ago
  • 1.4.1                                ...           4 years ago
  • 1.4.0                                ...           4 years ago
  • 1.3.1                                ...           4 years ago
  • 1.3.0                                ...           4 years ago
  • 1.2.0                                ...           4 years ago
  • 1.1.0                                ...           4 years ago
  • 1.0.1                                ...           4 years ago
  • 1.0.0                                ...           4 years ago
Maintainers (1)
Downloads
Today 0
This Week 0
This Month 0
Last Day 0
Last Week 0
Last Month 0
Dependencies (1)
Dev Dependencies (10)
Dependents (1)