- Stop limiting yourself.
- Start small, grow when needed.
- Frameworks won't give you an architecture, write your app and will not maintain it. It's only dev team's job.
- There is no "best" in the real life. Master with the needle can be better then a student with a sword.
Use Vanilla JS (ES6), it is fastest, simplest, cheapest solution.
- For routing there are a lot of libraries like Page.js
- For UI there are millions of libraries, the most simplest and fastest I see are RE:DOM, Monkberry. However, Vanilla DOM is fastest and doesn't requires in most cases a lot of extra code.
- Data and business layer is always unique in each project. Just use a simple AJAX/API-speaking objects based on single Api/Model object which uses fetch() or XHR under the hood.
The best front-end architecture is no static architecture.