liim
v1.0.2
Published
Liim: a tiny service container for JavaScript
Downloads
16
Readme
Liim
A tiny service container.
One of the goals is for liim
to be as small and fast as possible. It is not supposed to include all possible features. If you need to enhance it with additional features, you can extend the instance and add the functionality on top.
Right now it is ~380B minifed and ~230B gzipped.
Usage
Registering Services
Create the service container:
import Liim from "liim";
let liim = new Liim();
A service can either be any value or a function which will create the dependency:
liim.set("hello", new MyService);
// create the service lazily
liim.set("ohai", (liim) => {
return new ServiceWithDependencies(liim.get("a"), liim.get("b"));
});
Services with a service factory function will only be created when the service is fetched for the first time. Also they will only be created once, as the instance is reused.
Fetching Services
You can get services using the .get()
method:
liim.get<Service>("service-name");
This method will throw if the service is missing. If the service is an optional requirement for your app, you should check on existence with
if (liim.has("service-name"))
{
// service is defined
}
beforehand.