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

universal-navigation

v1.0.0

Published

A small Helper to make navigation between pages writen in different frameworks easy

Downloads

8

Readme

Universal-Navigation

A Huge ugly Workaround to achieve navigation between "pages" in the same app writen in different frameworks(don't do that by the way) It's really fucking ugly, i know. If you have better ideas to solve that specific problem, i`d be happy to hear =)

What Exactly it does

Assume you have an app with two modules, one for User CRUD and another for fetching tweets. You asked for a friend of yours to make the users CRUD, and he did it in vue.js. You don't like Vue.js, so you built the tweets stuff with React. For some reason you really want the app to be a single page, or it's a Electron app and you don`t want the users to feel like he is in a web browser.

Here enters this piece of crap. Basically you will expose to the window(object) two functions per module, one to mount it and another to unmount, like that:

window.uNavPages.CRUD = {
  mount: () => // creates dom node, new Vue, etc,
  unmount: () => // probally remove dom node
}

Then, supose you have a menu to switch between them, you would do something like:

import uNav from "Universal-Navigation"
const Nav = new uNav()
document.getElementById("menu-btn-1").onclick = Nav.link({name: "CRUD", scripts: ["dist/crud.js"]})
document.getElementById("menu-btn-2").onclick = Nav.link({name: "TWEETS", scripts: ["dist/tweets.js"]})

where name must be the exact name of the object you put in window.uNavPages

scripts must be an array and may contain multiple scripts, as long as one of them expose the mounting functions

You can also pass a styles array to load some css files

Nav.link will return a function, that when called will call unmount of the current mounted module(if there is one) and call mount of the one you passed the name.

You can check the example folder where i poorly tried to demonstrate how it works.

Running Tests

Start the test server(needed to serve the scripts we will be trying to load) with npm run serve:test and Run the Tests with npm test