Архитектура фронтенда
Code splitting: тест с множественным выбором
Шесть вопросов поперёк всего юнита. Ни один не просит определение — каждый отражает решение по разбивке, которое ты принимаешь под реальным бюджетом латентности, где неверный выбор деградирует LCP или заставляет заново скачивать React на каждом деплое.
Убедись, что связываешь латентностный размен, правило «маршрут vs компонент», request waterfall, кэширование vendor-чанка и resource hints — синтез, к которому вёл обзор.
Команда оборачивает каждую панель дашборда в React.lazy. Анализатор показывает 40 чанков, ни один больше 12 KB, но полевой LCP на 4G деградирует с 2.3s до 4.1s. Что доминирующая причина?
Можно разбить ровно одну вещь на странице. Какой кандидат — самый высокорычажный и низкорисковый split?
Ревьюер заявляет: «HTTP/2 multiplexing делает бандлинг устаревшим, так что дроби как угодно гранулярно». В чём он неправ?
Вернувшиеся пользователи заново скачивают React на каждом деплое, хотя зависимости не менялись. Самая вероятная причина?
Интерактивный viewer на 180 KB лежит под сгибом и открывается, только когда пользователь до него прокрутит. Лучшая стратегия загрузки для аудитории на 4G?
В чём практическая разница между rel='preload' (или modulepreload) и rel='prefetch' для чанков?
Сквозная линия юнита — одно дерево решений: разбивка это латентностный размен, а не бесплатное сокращение размера, поэтому вопрос всегда в том, сколько последовательных round trip’ов ты добавил на критический путь. Разбивай по маршрутам по умолчанию (ограниченный waterfall, дефолт фреймворка); разбивай компонент только если он тяжёлый и не на первой отрисовке; никогда не разбивай мелкий контент над сгибом. Именно waterfall, а не число байт, проигрывает на 4G, и HTTP/2 его не спасает. Защити кэширование content-hashed vendor-чанком с вынесенным runtime, и используй preload для критичных сейчас чанков, prefetch — для вероятно-следующих навигаций.