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

routsey.js

v1.0.1

Published

JavaScript Router and Template Engien

Downloads

1

Readme

routsey.js

Simple JS router

Useage

Step 1 - Initalize Router and include the root location:

const router = new Router({
  root: "/"
});

Step 2 - Add routes and pass along the location of the route, and a function that the route will perform:

You can do this inline:

router.add('/about/', function () {
    alert('About Me!');
  })

You can also pass a function variable:

var about = function () { console.log('About Me!'); }

.add('/about/', about)

You can also pass along URL parameters:

.add(/products\/(.*)\/specification\/(.*)/, function (id, specification) {
    console.log(id);
  })

You can also tell it to render HTML:

var search = function () { render('templates/search.html'); }
  .add(/search/, search)

Or use text:

var search = function () { render(<div>This is the search page!</div>'); }
  .add(/search/, search)

Templates and Rendering

Firstly the render function will only render what is found in the with an id of "application" inside your root html file. When using the render function, you can pass two parameters. 1 - The file or text that you would like rendered 2 - Data to be passed through in the form of an {object}

If you are passing data, you can recreate the parameter with the mustache syntax WITHOUT spaces before or after.

render('<div><p>Hello, {{user}}</p></div>', {user: 'Nick'});

You can also use two options for rendering templates inside other templates: The data-include attribute will accept two parameters seperated without spaces and a + sign:

<div class="hero" data-include="templates/greeting+{greeting: 'Hello World!'}"></div>

This will render templates/greeting.html inside of the div with a class of hero. It passes along to greetings.html the variable {{greeting}}. The data-for will attribute will accept two parameters seperated without spaces and a + sign. As this is a for function, it is expecting an array of data to be passed:

<div class="list" data-for="templates/list-item+{items: ['Wash clothes', 'Do dishes', 'Clean bathroom']}"></div>

/* Inside list-item.html */
<li>{{items}}</li>

This will result in:

<div class="list" data-for="tempaltes/list-item+{items: ['Wash clothes', 'Do dishes', 'Clean bathroom']}">
  <li>Wash clothes</li>
  <li>Do dishes</li>
  <li>Clean bathroom</li>
</div>

This might become cumbersome to pass along data inline like this. You can also pass data from the render function into the first template and then straigth through to the next.

var about = function () { render('hadena.html', {data: {author: 'Nick Graffis'}}); }
<div class="hero-foot" data-include="templates/footer+{author: '{{data.author}}'}"></div>
<template>
	<div class="content has-text-centered"><p><strong>派手な HADENA</strong> by <a href="https://twitter.com/nickgraffistwit">{{author}}</a>. Learn about the project<a href="/code"> here</a>.</p></div>
</template>

You can also use <script-ommit></script-ommit> tag inside a template and then reference that in yoru data-includ or data-for: