0.2.0 • Published 1 year ago

@internetarchive/lazy-loader-service v0.2.0

Weekly downloads
29
License
AGPL-3.0-only
Repository
-
Last release
1 year ago

Lazy Loader Service

An ES module to lazy load javascript. Based on the lazy loader from Vaadin Router.

Installation

yarn add @internetarchive/lazy-loader-service

Usage

import { LazyLoaderService } from '@internetarchive/lazy-loader-service';

const lazyLoaderService = new LazyLoaderService();

await lazyLoaderService.loadScript({ src: 'https://my-server.com/some-service.js' });

// assuming `some-service.js` creates `window.someService`
const response = window.someService.getResponse('foo');

...

Advanced Usage

Use an alternate script container instead of document.head (the default).

<div id="script-container"></div>
import { LazyLoaderService } from '@internetarchive/lazy-loader-service';

const container = document.querySelector('#script-container');
const lazyLoaderService = new LazyLoaderService(container);

Load a javascript module / nomodule

import { LazyLoaderService } from '@internetarchive/lazy-loader-service';

const lazyLoaderService = new LazyLoaderService();
await lazyLoaderService.loadBundle({
  module: 'https://my-server.com/some-service-module.js',
  nomodule: 'https://my-server.com/some-service-nomodule.js'
});

const response = window.someService.getResponse('foo');
...

Add additional attributes to the script tags

import { LazyLoaderService } from '@internetarchive/lazy-loader-service';

const lazyLoaderService = new LazyLoaderService();
await lazyLoaderService.loadScript({
  src: 'https://my-server.com/some-service.js',
  attributes: [{ key: 'foo', value: 'bar' }]
});

=>

<script src="https://my-server.com/some-service.js" async foo="bar"></script>

Development

Prerequisite

yarn install

Start Development Server

yarn start

Testing

yarn test

Testing via browserstack

yarn test:bs

Linting

yarn lint