npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

jb-router

v0.0.5

Published

pure js router to route react component and more.

Downloads

1

Readme

jb-router

pure js router to route react component (not ready for public use yet)

installation

npm install jb-route

initiate router

  1. import package to your HOC(higher order component) or layout page; import Router from 'jb-router'

  2. create new object of router:

    var router = new Router(RouterConfigData); router config data is router config file that i will explain later

determine page place DOM in HTML file or JSX View page

  • create div tag by id pageContainerTagId of router config in your layout for add component to it as child

          <div id="PagePlace"></div>

create config file

1.create a RouterData.js file

        class RouterData {

            basePath= '/basePath'; // base path of rout page
            pageContainerTagId = 'pageContainerTagId'; //id of html tag while component add as child in this tag
            pagesTitlePrefix = "AppName title"; //add this title to title of component
            routes = [
                        {
                            url:                "/", //path of page
                            reactComponentPath: "ComponentFolder/ComponentFile", // component of page
                            name:               "ComponentName", // name of page
                            title:              "Page title"//title of page
                        }
            ] // array of path to open component
        }

2.import RouterData.js in your layout page and pass it as parameter to Router constructor

3.to add childRoute to this routeItem you can set childRoutes property of item as below:

    {
        url:                "/", //path of page
        reactComponentPath: "ComponentFolder/ComponentFile", // component of page
        name:               "ComponentName", name of page
        title:              "Page title"//title of page
        childRoutes: [
            {
                url:                "/user",// this url add to parent url and create path  
                reactComponentPath: "ComponentFolder/UsersComponentFile",//componnet of page
                name:               "generalUser",// name of page
                title:"اطلاعات کاربر", titel of page,
                childRoutes: [
                    {
                        url:                "/add",// this url add to parent url and create path  
                        reactComponentPath: "ComponentFolder/AddComponentFile",//componnet of page
                        name:               "AddUserPage",// name of page
                        title:"اضافه کردن کاربر",// titel of page
                    }
                ]
            }
            ]
        }

as you can see every route item can have child route that inherit url from parent route for example https://domain.com/user/add will load "AddUserPage" the child route also inherit settings of prent route. if you dont define reactComponentPath url cant be loaded and will throw exception on page load but they can have child routes to pass URL params variable to component set variable and use it as props like below:

        {
            url:                "/user/{userId}/detail", // detail of user page
            reactComponentPath: "ComponentFolder/user.js", //component of page
            name:               "userDetail", name of page
            title:              "ویرایش کاربر"//title of page
        }

to give params variable in user component in user.js file use code of below:

        class User extends Component{
            constructor(props){
                super(props);
                this.userId = this.router.params.userId
            }
        }

how to load page

  • to load page , you must use loadPage method of router as below:

          this.router.loadPage(url); //e.g this.router.loadPage("/user/add")

get informed on load page finished

  • there is a callback method on load state change in router mean when you call this.router.loadPage(url) the callback function called and newState will be 0 after router could find route item in your data config file , new state will be 1 and after finish everything the newState will be 5 so you can stop showing loading

          this.router.config.events.onLoadStateChange = function(oldState,newState){}

requirement

jb-router currently use SystemJS as a dynamic module loader so youu need to init and config systemjs first in your app