Что такое ленивая загрузка?

Ленивая загрузка означает загрузку элементов на веб-страницу на более позднем этапе, когда пользователь собирается увидеть или взаимодействовать с конкретным элементом.

Почему это полезно?

Предположим, у вас есть веб-сайт интернет-магазина, где вы показываете пользователям тысячи товаров. Когда страница загружена, вы показываете только от 10 до 20 продуктов в окнах просмотра и, следовательно, загружаете изображения для них, но тогда вы не захотите загружать изображения продуктов, которые находятся внизу, потому что
если мы загрузим эти изображения заранее и пользователь не прокручивает страницу вниз, чтобы увидеть эти изображения, тогда это будет пустой тратой ресурсов браузера и ненужным потреблением данных для загрузки этих ресурсов.

Как использовать API наблюдателя пересечения для этого?

Существуют и другие внешние библиотеки, которые поддерживают эту функцию, но мы также можем добиться этого с помощью Intersection Observer API, собственного веб-API.

Все изображения по умолчанию имеют тег dataSrc (вместо тега src), который неизвестен браузеру, и изображения не загружаются заранее.

Затем мы устанавливаем прослушиватель пересечения для каждого изображения на веб-странице, и как только это изображение пересекается с окном просмотра браузера, запускается функция обратного вызова. В функции обратного вызова мы устанавливаем атрибут src, копируя значение из тега dataSrc, и теперь, поскольку тег src известен браузеру, он загружает изображения. Наконец, наблюдатель удаляется с этого изображения.

Вот и все. Вы найдете полный исходный код по адресу https://github.com/SaurabhGarg1/Lazy-load-images