Современные веб-приложения теперь рассматриваются как наборы модулей, взаимодействующих друг с другом для создания функций/функций. Объединение – это процесс объединения кода в один "пакет" (например, скрипт/файл) для доставки пользователю.
Разделение кода преобразует эти «связки» из одного файла в несколько, что может еще больше повысить производительность за счет отложенной загрузки только тех частей вашего сайта, которые нужны пользователю.
Пример объединения кода (до разделения кода):
Необработанный код:
// /pages/Index.js import { add } from '../components/math.js' console.log(add(15, 15)); // 30
// /components/math.js export function add(a, b) { return a + b; }
Связанный код:
function add(a, b) { return a + b; } console.log(add(15, 15)); // 30
Как видите, объединение — это процесс объединения импортированных файлов/"модулей" в один "пакет". Хотя это здорово, это может привести к длительной загрузке, поскольку ваше приложение увеличивается в размере с добавлением страниц и функций.
Разделение кода
Вы можете ускорить свой сайт, загружая только то, что нужно пользователю, а не загружая все приложение сразу. Например, загружая только те компоненты, которые находятся НА странице, которую просматривает пользователь.
Одна вещь, которая делает Гэтсби мощным, заключается в том, что он делает это для вас. Gatsby автоматически и разумно разделяет код на пакеты при запуске gatsby build
. Однако делает это определенным образом. Например:
Представьте, что на вашем веб-сайте есть две страницы: целевая страница и страница контактов. Каждая страница имеет 2 уникальных компонента; всего 4:
— Целевая страница
- Hero.js (компонент)
- Services.js (компонент)
— Контактная страница
- ContactInfo.js (компонент)
- ContactForm.js (компонент)
В традиционном приложении React пользователь, посетивший целевую страницу, загрузит пакет, содержащий все компоненты — Hero, Services, ContactInfo и ContactForm — несмотря на то, что для правильного отображения нужны только компоненты Hero и Services. целевая страница.
Умножьте это, скажем, на 10 страниц, и у вас есть проблема — вы обслуживаете 10 МБ полезной нагрузки для страницы размером 1 МБ.
Вот как Гэтсби подходит к разделению кода: постранично.
Эта сильная сторона Gatsby также может оказаться серьезным недостатком при создании одностраничного сайта. Поскольку Gatsby разделяет пакеты по страницам, вы в конечном итоге доставите клиенту ненужную массивную полезную нагрузку, что замедлит вашу самую большую отрисовку с содержанием / начальную загрузку.
Итак… решение?
Компоненты разделения кода вместо страниц
Разделение кода помогает лениво загружать только то, что нужно пользователю, и сокращать время первоначальной загрузки без изменения количества написанного вами кода.
Команда React создала React.lazy и Suspense для реализации этого, но, к сожалению, ни один из них не совместим с рендерингом на стороне сервера/Gatsby.
Вместо этого они рекомендуют использовать библиотеку под названием Загружаемые компоненты.
Прочитайте полный пост: https://snappywebdesign.net/blog/gatsby-code-splitting
Первоначально опубликовано на https://snappywebdesign.net.