>> или статическая информация (которую нет смысла пропускать через js)
Для таких ситуация обычно создается компонент
<StaticInformation page="page1" />
, в котором, к примеру, с помощью componentDidMount() заполняется div информацией, полученной с помощью post/get запроса.
>> уроками где рассматривается более обширная архитектура чем в туториалах по SPA
https://www.youtube.com/watch?v=MhkGQAoc7bc&list=P... - самые адекватные уроки
>> Для ситуации когда нужно отрендерить два компонента в разных местах страницы
Изначально создается родительский компонент App extends React.Component (к примеру), в котором в методе render имеем:
<section>
<Header />
<Content />
<Footer />
</section>
Подключаем import Header from ... и далее работает с каждым компонентом отдельно.
Сам всегда использую react-router, так как он вполне подходит и для многостраничных сайтов (
тык). Перебрасываем пользователя на index.html при любом запросе и обрабатываем все уже внутри приложения. Для пользователя разницы никакой.
Если хотите полностью отдельные страницы, то можно насоздавать html страницы, подключив по куче модулей, как Вы и сказали, но данный вариант обычно не используется.