На основе роутов вполне можно работать имхо.
Т.е. у вас есть шаблон, который имеет вид:
<div>
<common-element></common-element>
<router-view></router-view>
</div>
Соответственно все вложенные пути будут отрисовываться внутри родителя и только они будут перерисовываться.
Плюс вы можете даже в этом шаблоне мониторить текущий путь и показывать либо скрывать какие-то общие элементы или элементы, которые нужно отобразить только для конкретного маршрута или по какому-либо условию.