es-lazy
v0.0.1
Published
Lazy import ES module files
Downloads
1
Readme
es-lazy
Lazy load ECMAScript modules.
Installation
npm i es-lazy
Usage
All methods take three arguments:
- meta: Import meta
- path: the path to the filename relative to the current file
- exportedAs: the name of the export to import (default:
default
)
Lazy function
Create an async function that when called will import the file and call the exported function with the arguments provided.
lazy.js
export default (name) => {
return `${name} is lazy!`;
}
import { lazyFunction } from 'es-lazy/lazy-function.js';
const iAmLazy = lazyFunction(import.meta, './lazy.js');
console.log(await iAmLazy('Han')); // --> Han is lazy!
Lazy class
Create an async function that when called will import the file and instantiate the exported class with the arguments provided.
lazy.js
export default class {
constructor(name) {
this.name = name;
}
message() {
return `${this.name} is lazy!`;
}
}
import { lazyClass } from 'es-lazy/lazy-class.js';
const iAmLazy = lazyClass(import.meta, './lazy.js');
console.log((await iAmLazy('Han')).message()); // --> Han is lazy!
Lazy generator
Create an async generator function that when yielded will import the file and call the exorted generator function with the arguments provided.
lazy.js
export default function* (name) {
yield `${name} is lazy!`;
yield `${name} is still lazy!`;
yield `${name} is not getting less lazy!`;
}
import { lazyGenerator } from 'es-lazy/lazy-generator.js';
const iAmLazy = lazyGenerator(import.meta, './lazy.js');
for await (const message of iAmLazy('Han')) {
console.log(message);
}
// console --> Han is lazy!
// console --> Han is still lazy!
// console --> Han is not getting less lazy!
Lazy factories
The factory is called once when the first call to the factorized method is made. Available for functions (lazy-function-factory.js
), classes (lazy-class-factory.js
) and generators (lazy-generator-factory.js
).
lazy.js
export default (name) => (lazyOrNot) => {
return `${name} is ${lazyOrNot ? 'lazy' : 'not lazy'}!`;
}
import { lazyFunctionFactory } from 'es-lazy/lazy-function-factory.js';
const amILazyFactory = lazyFunctionFactory(import.meta, './lazy.js');
const amILazy = amILazyFactory('Han');
console.log(await amILazy(true)); // --> Han is lazy!
console.log(await amILazy(false)); // --> Han is not lazy!