Проверяет понимание code splitting в React и умение избегать дублирования общих компонентов (например, хедера) между чанками при агрессивном разделении бандла.
Когда приложение агрессивно делится на чанки (например, каждая страница — отдельный бандл), общие компоненты вроде хедера могут дублироваться в каждом чанке. Это происходит, если каждый маршрут импортирует хедер напрямую, и сборщик не может вынести его в общий модуль. В результате растёт размер бандла и хедер загружается многократно.
cacheGroups так, чтобы общие модули (например, из папки components/common) попадали в отдельный чанк.React.lazy один раз на уровне layout, а не внутри каждой страницы.module.exports = {
optimization: {
splitChunks: {
cacheGroups: {
common: {
test: /[\\/]components[\\/]common[\\/]/,
name: 'common',
chunks: 'all',
minChunks: 2,
enforce: true,
},
},
},
},
};const Header = React.lazy(() => import('./Header'));
function Layout({ children }) {
return (
<>
<Suspense fallback={<div>Loading...</div>}>
<Header />
</Suspense>
{children}
</>
);
}
// Страницы импортируются динамически, но layout общий
const PageA = React.lazy(() => import('./PageA'));Такой подход гарантирует, что хедер загрузится один раз и будет переиспользован всеми страницами, а не дублироваться в каждом чанке.
Итог: применяйте вынос общих компонентов в shared-чанк или общий layout, когда используете агрессивный code splitting — это уменьшает размер бандла и ускоряет загрузку.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию