Проверяет понимание принципов разделения кода в React-приложении на отдельные чанки для оптимизации загрузки.
Когда React-приложение собирается в один чанк, весь код — библиотеки, компоненты, утилиты — попадает в один файл. При первом посещении сайта браузер скачивает этот файл целиком, даже если пользователь видит только страницу логина. Это замедляет загрузку и увеличивает расход трафика. Разделение кода (code splitting) решает эту проблему: приложение разбивается на несколько частей, которые загружаются только тогда, когда они действительно нужны.
Основной инструмент — динамический импорт. Вместо статического import Component from './Component' используется const Component = React.lazy(() => import('./Component')). React.lazy позволяет отложить загрузку компонента до момента его рендеринга. Для обработки состояния загрузки используется компонент Suspense, который показывает заглушку, пока чанк загружается.
import React, { Suspense, lazy } from 'react';
const Dashboard = lazy(() => import('./Dashboard'));
const Settings = lazy(() => import('./Settings'));
function App() {
return (
<Suspense fallback={<div>Загрузка...</div>}>
<Dashboard />
<Settings />
</Suspense>
);
}Разделять код нужно по логическим границам приложения. Самый распространённый подход — разделение по маршрутам: каждая страница становится отдельным чанком. Также можно выделять тяжёлые библиотеки (например, графики или редакторы) в отдельные чанки, чтобы они не тормозили начальную загрузку. Важно не дробить код слишком мелко — каждый чанк имеет накладные расходы на HTTP-запрос, поэтому оптимально, чтобы размер чанка был не меньше 10–20 КБ.
Webpack автоматически создаёт отдельные чанки для динамических импортов. Дополнительно можно настроить splitChunks, чтобы вынести общие зависимости (например, React) в отдельный vendor-чанк. Это позволяет браузеру кэшировать неизменяемые библиотеки отдельно от кода приложения.
// webpack.config.js
module.exports = {
optimization: {
splitChunks: {
chunks: 'all',
cacheGroups: {
vendor: {
test: /[\\/]node_modules[\\/]/,
name: 'vendors',
chunks: 'all',
},
},
},
},
};Разделение кода — это стандартная практика для крупных React-приложений. Оно ускоряет первую загрузку, снижает нагрузку на сеть и улучшает пользовательский опыт. Применяйте его всегда, когда приложение содержит несколько маршрутов или тяжёлые компоненты, которые не нужны на старте.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию