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

bundleloader

v0.0.7

Published

Load a javascript file and run it.

Downloads

3

Readme

BundleLoader

It is a common pattern to use tools like browserify to bundle several javascript files from an application together into one large file. This creates a challenge if we want to show a progress bar when the application is loading, since the code for the progress bar can't be bundled with the application itself. This is a kind of chicken or egg problem, the progress bar to load the application can't be bundled with application, because then the application would need to be loaded before the progress bar could be shown.

BundleLoader provides an easy way to load a javascript file and run it, and to show a progress bar while the script is being loaded. It is under 4k in size.

There is room for improvement. There is currently no way to theme the loading bar, it would be nice to have, using CSS for example.

Basic Usage

The basic usage is like this. Here we just tell BundleLoader to load a javascript file. The file will be loaded and automatically executed and then a callback function will be called:

<html>
	<script src="bundleloader.min.js"></script>
	<script>
		var loader = new BundleLoader();

		loader.onload = function() {
			console.log("the script is loaded...");
		}

		loader.load("myscript.js");
	</script>
</html>

More Resources

In the case where there are more resources needed by the loaded bundle, we can still use the loading screen provided by BundleLoader for the sake of consistency. In the following example, we assume that the loaded bundle provides a class called TheApp, which is the main application class. We also assume that this class can dispatch events to signal the completion and progress of the loading of its resources.

<html>
	<script src="bundleloader.min.js"></script>
	<script>
		var loader = new BundleLoader();

		loader.onload = function() {

			// Create the application.
			var theApp = new TheApp();

			// Updatethe loading bar when the application signals progress.
			theApp.on("loadProgress", function(ev) {
				loader.showProgress("LOADING RESOURCES", 50+ev.percent/2);
			});

			// Hide the loader on completion.
			theApp.on("loadComplete", function() {
				loader.hide();
			});
		}

		// Let the loading of the bundle represent 50% of the loading bar.
		loader.load("myscript.js", "LOADING", 50);
	</script>
</html>