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

@pennions/jet-framework

v1.0.1

Published

Is a reactive framework based on JET which you can use to not only build and interpolate your template, but also update the it on-the-fly in the browser!

Downloads

2

Readme

JET-Framework

Is a reactive framework based on JET which you can use to not only build and interpolate your template, but also update the it on-the-fly in the browser!

You have only need two commands.

One for the initialization. It takes two required arguments:

jet.init('app', vm);

You can also pass a function as a third argument. This will be called after everything has been initialized.

'app' is an element id, in which you did all your templating and vm is a viewmodel.

example viewmodel:

const vm = {
    shoppingList: {
        groceryStore: ['Carrot', 'Melon', 'Potato']
    },
    a: {
        b: {
            c: 1337
        }
    },
    message: 'Hello world!',
    hello_world: '<div>{{ message }}</div>'
};

After you initialized the framework, you can use the following command to update the template with a new value:

jet.update('a.b.c', 42);

'a.b.c is the complete path in the vm, so in this example, c is nested under b which is nested under a.

Another valid example would be:

jet.update('hello_world', '<h1>{{ message }}</h1>')

It works just like you would access a property from a JSON object.

In the above example you are setting a new template. Which will now be rendered. This is useful for having router functionality.

You could write your own router to fetch a new template on demand and update your viewmodel. All the properties inside will also become reactive!

8.1. Get value

You can use the following command to retrieve the current value of a property inside the reactive viewmodel:

jet.get('a.b.c');

Where a.b.c is the complete property path.

8.2. Watchers

You can do a function when a value changes, it will pass the new value as an argument:

jet.watch('a.b.c', myFunction(newValue) => console.log(newValue));

N.B. if the value is nested and you update it like 'a.b.c' it will only trigger when you watch it with 'a.b.c' parameter and not for instance if you do jet.update('a.b', { c: 'newString' } );

8.3. Adding event listeners

Shorthand for document.getElementById(id).addEventListener(event, eventFunction, options?):

jet.addEvent(id, event, eventFunction, options?);

Shorthand for document.getElementById(id).removeEventListener(event, eventFunction, options?):

jet.removeEvent(id, event, eventFunction, options?);