When we started building Utreon in September of 2019, I had to chose a front-end framework in which to develop the website client as a modern single-page application (SPA). The last time I had developed a web front-end, I had used jQuery. You may be groaning now, but this was a decade ago.
After doing a bit of research, I figured out that there were essentially three modern competing front-end frameworks:
From what I could read, AngularJS was difficult to learn due to complicated terminology. It was also principally developed by Google, which was a liability, because Google could drop the project at any time. React JS seemed to be easier to learn, but had the same issue of being deeply tied to a tech giant. Lastly was Vue.js, a new and independent framework that had been developed after the former two and that was supposedly much easier to learn.
I picked Vue.js in the first week. In the second week, I realized I would need for the site to have server-side rendering (SSR). SSR is a must for SEO – without it, search engines see nothing when crawling your site. It also makes sites much quicker, because pages are pre-rendered and then "hydrate" on the client-side. I found Nuxt.js, which was a framework that worked on top of Vue.js that added SSR capabilities and much more.
The best aspect was that it was much more "opinionated" about how to structure your app. This was important as learning a new framework in such a short amount of time was difficult when no two example projects looked remotely alike. It didn't take long to port the site to Nuxt.
It took a month to get a reasonable grasp of things, and perhaps another two to get a solid understanding. I'm happy with Nuxt and would recommend it to anyone starting a new web app. The documentation is good, but lacking in concrete examples. That said it's a fantastic framework.