А ещё лучше разбить один большой бандл на N частей (по разделам сайта), и при переходе от одного раздела к следующему загружать бандл запрашиваемого раздела.
Собирать его можно тем же вебпаком с помощью этого плагина.
Насколько целесообазно оставлять стили в JS — зависит от.
Например, если у меня JS-приложение, которое само отрисовывает весь DOM, то я бы оставил стили в JS и посмотрел насколько быстро работают инкрементальные билды. Но если это JS-приложение изоморфное (то есть начальный html прилетает с сервера), то я выношу CSS в отдельный файл и подключаю в `head`, потому что если оставить их в JS, то браузер сначала отрисует DOM без стилей, и только после загрузки JS накинет сверху CSS. Это моргание видно на клиенте.
Мы расширяем базовый класс Footer extends React.Component, и вызываем конструктор «верхнего» класса (React.Component), передавая ему аргументы, переданные базовому конструктору Footer.
Потому что для пользователя скролл, как походка. Это автоматизм, к механике которого он привык.
«Задача дизайнеров заключается в том, чтобы создавать интерфейсы, которые не позволяют привычкам (автоматизмам) вызывать проблемы у пользователей»
— Джеф Раскин
Обращение к серверу за html'ем будет только одно — первое. В ответе на него клиент получает html страницы + клиентское js-приложение. При переходе по навигации будет работать уже React на клиенте, который на сервер будет ходить только за данными и обновлять в DOM только те компоненты, которые поменялись.