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

yami-loader

v0.1.2

Published

``` pnpm add yami-loader // or yarn add yami-loader // or npm install yami-loader ```

Downloads

46

Readme

yami-loader

A simple library to dynamic import script and css and jsonp

surpport typescript;

Install

pnpm add yami-loader
// or
yarn add yami-loader
// or
npm install yami-loader

Import

// class
import YamiLoader from 'yami-loader';

OR

// instance
import { yamiLoader } from 'yami-loader';
// class
import { YamiLoader } from 'yami-loader';
// custom
const yamiLoader = new YamiLoader({timeout:15*1000});

// timeout default 15s

Examples

For script

// options is optional with html script element attributes
yamiLoader
    .loadScript("/demo.js", options)
    .then((el,opts) => {
        // el is HTMLScriptElement,
        // opts equal to your options,but may will automaticlly inject some properties by the lib.
        // do something after loaded at here
    });

For css

// options is optional with html link element attributes
yamiLoader
    .loadCss("/demo.css", options)
    .then((el) => {
        // el is HTMLLinkElement
        // do something after loaded at here
    });

For jsonp

yamiLoader
    .jsonp("/demo.js", {
        // tell the server the params name of the callback
        name: "jsonCallback", // optional, default "jsonCallback"
        // tell the server the callback function name
        callee: "demo", // required
        // finally looks like this: http://www.xx.com?jsonCallback=demo,
        // ...etc options
    })
    .then((data,options) => {
        console.log(data);
    });

// typescript can spec a generic response type;
// yamiLoader.jsonp<number>("/demo.js",...).then(data=>{})

!!! note: jsonp's response has data instad of el

For any

// anyone of html element tag;

yamiLoader
    .load("script", {
        src:"demo.js",
        // ...more HTMLScriptElement options
    })
    .then((el,options) => {
        console.log(el,options);
    });


yamiLoader
    .load("img", {
        src:"demo.png",
        // ...more HTMLImageElement options
    })
    .then((el,options) => {
        // default the element insert to the head, you can re-insert to the body or other element
        // the orignal element will be automaticlly removed from the head.
        document.body.appendChild(el);
    });
yamiLoader
    .load("iframe", {
        src:"demo.png",
        // ...more HTMLImageElement options
    })

// the element without onload event will be returned once created or queryed (only working when the element has id,if no id always create a new element).

yamiLoader
    .load("div", {
        id:"demo",
        // ...more HTMLDivElement options
    })

Above all examples base on promise syntax, if you like callbacks, just follow the below:

We recommand you use the promise syntax,because it's more clear and easy to use.

yamiLoader
    .loadScript("/demo.js",options, {
        onload(el,options){},
        onerror(reson,options){},
        oncomplete(options){},
    })

!!! note: jsonp's onload has data instad of el

Also if you like use the dispatch event,just follow the below

Because the event cannot spec element,you should mark the element by attribute, such as className,id

Also the options export a field named 'extra' , you can fill it use to mark the element.

// import { LoaderEvent } from "yami-loader"

document.addEventListener(yamiLoaded.LoaderEvent.LOAD /** or LoaderEvent.LOAD */,{detail:{el,options}}=>{
 // detail is a object as { el:HTMLElement,reason:Error,data: }
 if(el.id ==="demo"){
    // do something
 }
 // or
 if(options.extra ==="marked"){
    // do something
 }
},false)
yamiLoader
    .loadScript("/demo.js",{id:"demo", extra:"marked"})

!!! note: jsonp's yamiLoaded.LoaderEvent.LOAD event has data instad of el

-----------END--------------