Actually when you stay in the old html/css/js system dropping monolithic webserver like Ruby's Ralls or Pythons old Django keeps things simple and they are not broken if what you build is a website or even limited interactive functionality webapp.
You can sprinkle some interactive parts to framework rendered templates using, react, Angular, vue or even jQuery. Just keep routing & state in the backend. This is tried and tested way, with clear docs and huge ecosystems + every 3th party API known to man integratable as premade package...
Now if you really are building something that is true interactive application it comes a bit messy. React + React_router + Redux or Vue equal are awesome but best practice, ecosystem or even simple things like styling are not as developed. Then there is an issue where part of your backend is probably not ready as an open API & or reporting service you used cannot collect data from js objects or SEO issues or ... Well you get the pic. This really hits hard small teams. You simply cannot afford spending a day troubleshooting webpack.
There is also a third way which I use rather often for marketing and landing pages. This is webapp light. Its simply a single HTML5 index page + CSS stylesheet with hardcoded links and some cool animations and interactions writing in vanilla js. These are hosted in object store like S3 and loaded to CloudFlare. Any rich interactions are done by dropping in 3th party tools with client side API keys. I am expanding this to call Lambda endpoints through AWS API gateway.
You would be surprised how many real business problems can be solved with something like this. Especially good approach for marketing pages, landing sites. Docs, sales brochures with interactive features, management reports etc..