Разделение кода в React | OTUS

Разделение кода в React

Когда вы используете CRA (create react app) либо Next.js, вы должны иметь готовый конфигурационный файл webpack. Он создаст одиночный файл (бандл), который и будет содержать все ваше приложение. В определенных обстоятельствах это может стать источником проблемы: если вы применяете сторонние библиотеки либо приложение просто увеличивается в размерах, становится больше и бандл. То есть все работает приблизительно следующим образом: — пользователь заходит на сайт; — веб-браузер скачивает весь бандл, а потом все отображает.

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

Для выполнения поставленной задачи можно задействовать React.lazy. Правда, React.lazy и Suspense пока не получится применить для отображения на стороне сервера. Но и эта проблема решаема, правда, уже с помощью React Loadable. В документации есть неплохое руководство, посвященное разделению бандлов с серверным отображением.

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

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

Ниже — пример настройки разделения кода на основе путей и посредством библиотек типа React Router и React.lazy:

1-1801-022f39.png

Suspense необходим тут на всякий пожарный: он будет показан, когда необходимый бандл ещё не загрузился. Тут же можно использовать и индикатор загрузки, что позволит показать пользователям, что сам процесс не стоит на месте. Также можно применять границы ошибок, причем даже в качестве родителя Suspense в целях обработки других ошибок типа сетевых.

React.lazy пока поддерживает лишь экспорт по умолчанию. Но если нужны именованные экспорты, всегда можно заглянуть в документацию React.

По материалам: https://medium.com/wineofbits/concepts-to-become-an-advanced-react-developer-684d90c086c2.

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
0 комментариев
Для комментирования необходимо авторизоваться
Популярное
Сегодня тут пусто