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

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

По мере того, как мы создаем компоненты кода, приложение растет, и размер пакета становится очень громоздким. Это может быстро сделать использование приложения очень трудным и особенно медленным, что имеет много недостатков, таких как длительное время загрузки и плохой пользовательский интерфейс. Ленивая загрузка — это способ избежать всего этого и имеет много других преимуществ.

Есть несколько преимуществ:

  • Более быстрое время начальной загрузки
  • Экономия пропускной способности/трафика данных
  • Экономия системных ресурсов как на стороне клиента, так и на стороне сервера

На практике предоставление контента (изображений, контента) по запросу означает, что ваше приложение будет иметь лучший пользовательский интерфейс благодаря более быстрой работе и времени загрузки, и вашим пользователям это понравится!

Использование React.Lazy()

React.lazy() упрощает создание компонентов, которые загружаются с помощью динамического import(), но отображаются как обычные компоненты. Это автоматически вызывает загрузку пакета, содержащего компонент, при рендеринге компонента.

React.lazy() принимает в качестве аргумента функцию, которая должна вернуть обещание, вызвав import() для загрузки компонента. Возвращенное обещание разрешается в модуль с экспортом по умолчанию, содержащим компонент React.

Использование React.lazy() выглядит так:

Использование React.Suspense()

Компонент, созданный с помощью React.lazy(), загружается только тогда, когда его необходимо визуализировать. Поэтому во время загрузки ленивого компонента следует отображать какое-то замещающее содержимое, например индикатор загрузки. Это именно то, для чего предназначен React.Suspense.

React.Suspense — это компонент для упаковки ленивых компонентов. Вы можете обернуть несколько ленивых компонентов на разных уровнях иерархии одним компонентом Suspense.

Компонент Suspense принимает свойство fallback, которое принимает элементы React, которые вы хотите отобразить, в качестве содержимого-заполнителя, в то время как все ленивые компоненты загружаются.

Я создал очень простую демонстрацию, чтобы продемонстрировать использование React.lazy() и Suspense для отложенной загрузки компонентов.

App.js

Пользовательский компонент.jsx

UserComponent.constant.jsx

Выход:

На вашем локальном хосте это должно быть очень быстро, и вы не сможете заметить изменения. Однако вы можете создать вспомогательный таймер или просто смоделировать более медленную сеть, которая сможет показать вам, как именно происходят изменения в миллисекундах. Это можно сделать:

  • открытие инструментов разработчика в вашем браузере
  • выбор вкладки сети
  • щелкнув вкладку онлайн в крайнем правом углу, чтобы открыть другие параметры (предустановки)
  • выбираю быстрый 3G

Теперь вы можете обновить свой браузер и посмотреть, как происходит ленивая загрузка.

Полный исходный код этой демонстрации можно найти здесь