Отложенная (ленивая) загрузка изображений, скриптов и т.д. при помощи Intersection Observer c полифиллом.
$ yarn add @itpeople/lazy-load
import LazyLoad from '@itpeople/lazy-load';
Это сэкономит немного места в основном бандле
window.addEventListener('load', async () => {
const { default: LazyLoad } = await import('@itpeople/lazy-load');
});
const lazyLoad = new LazyLoad();
<img class="js-lazy-load" data-src="image.jpg">
<div class="js-lazy-load" data-bg="image-2.jpg"></div>
Пример принудительной загрузки всех изображений внутри заданного контейнера
lazyLoad.loadContainer(document.querySelector('.some-container'));
Возможна также отложенная загрузка JS-кода, для этого необходимо загрузить модуль динамически.
lazyLoad
.observeElement(document.querySelector('.some-element'))
.then(element => {
// Загружаем модуль JS, CSS-файл, выполняем какой-либо код и т.д.
import('./components/some-module.js');
}, error => {});