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

@skatejs/sk-router

v0.3.3

Published

A web component router that's compatible with code-splitting out of the box.

Downloads

14

Readme

sk-router

A web component router that's compatible with code-splitting out of the box.

Install

npm i @skatejs/sk-router

Usage

In these examples we've used the hyperscript h export in @skatejs/val to create real DOM using JSX so that we can express them in a readable manner while still setting complex data types (which you cannot do with HTML).

/** @jsx h */

import { Route, Router } from '@skatejs/sk-router';
import { h } from '@skatejs/val';
import { Index, NotFound } from './pages';

const router = (
  <Router>
    <Route page={Index} path="/" />
    <Route page={NotFound} path="*" />
  </Router>
);

The page prop on the Route component is just a function that returns a DOM node. This means that it can be:

  • A custom element constructor.
  • A function that mounts a React DOM tree to a node and returns the node.
  • A function that does anything, so long as it returns a normal DOM node.

Optimisation / code-splitting

The example above loads everything up front. However, in a large app, you'd probably want to split up your pages into separate resources. Webpack can easily do this for you using import(). All you need to do to enable this is to:

  1. Use a function as your component instead of a constructor.
  2. Call import() in the function.
  3. Ensure the module you import contains a default export that can be anything that page takes, as mentioned above.
const lazyRoute = <Route page={() => import('./pages/docs')} path="/docs" />;

Links

We use PageJS underneath the hood, but we also export a Link component so that it doesn't have to capture all anchor clicks on the page, which could cause some confusion.

import { Link } from '@skatejs/sk-router';

const indexLink = <Link href="/">Home</Link>;