tldr; There is no spoon.
Longer version
There is no one answer. Choose one, and get the job done.
Even longer version
Javascript is versatile and blah blah. But, how should you begin your search for the right framework?
It took me no less than 3-4 weeks to get acclimatized with the nuances and settling down with a favourite framework. None should make the same mistakes. Here’s a humble-list (tm) -
- Choose a framework depending on your use case. If you are not a Javascript Guru, choose a framework that a lot of people use today.
- Don’t take advise from others at face value. Find your own failures (FYOF). Never trust videos by XXX that hands out advise on ‘best frameworks for 2019’ - they can certainly tell you existence of a certain framework but that topic is ** too broad ** for one right answer
- Don’t spend the next three months learning the nuances (e.g. are Vue helpers really helping?). Don’t go through a bunch of tutorials to find out whether the framework works for you - they are evil (yes, including those from me)
PS: I did the opposite of the above. It is easier to think postmortem and advise others.
A few pointers based on use case
All that said, here are a few things that I would do based on the use case. If anything this should be a point for you to critique, not follow.
Web app used for a narrow use case
Narrow use case = one or two screens. Not a lot of navigation b/w screens.
I can (& will) get away with a full stack framework of yore without SPA. Refer just the backend part of the application in the below use cases. Use Turbolinks for better UX - it helps quite a bit.
- AdonisJS
- ASP.NET Core
- Laravel
Static sites
If I can get away with a static site for the use case - I would not use Javascript at all. Hugo will be my first choice. If someone does threaten me with a gun to use Javascript, I will summon my F16 to the fight.
But if you are dying to use Javascript, I think both Next and Gatsby should be just fine.
Data driven applications
Data focused applications that is expected to have a ‘good’ user base.
- Backend: AdonisJS / ASP.NET Core
- Frontend: VueJS
- Start with REST if you are a beginner. If you are willing to spend some more time learning, GraphQL (Apollo Client & Apollo Server - with Boost)
In the Javascript world, I am also fond of FeathersJS. LoopBack if you are ‘enterprisey’.
Super UX
You are doing magic with UI. Animation, maps
- ReactJS
-
- Libraries - LeafJS, D3JS et. al.
I probably will use VueJS and justify to myself why I did that. As an after thought, I would rather not code such applications.
Mandatory companion mobile app
Data + lot of logic:
- ReactJS + React Native
These are hobby projects - haven’t got a chance to vet them thoroughly.
SSR
- NextJS
More no. of people use Next than my go-to choice ‘Nuxt’.
The future
-
No code/low code solutions
Believe it or not, future will be full of applications that you can drag/drop and create. I am partial to Salesforce.com Lightning (since I know Salesforce platform), but I believe the better options to start will be using software from the likes of Mendix / Outsystems (more open). -
The new full stack
Full stack frameworks will get revitalized with PWAs. Blazor from Microsoft comes to mind. I believe they will make the next generation of web development (incl. mobile apps) so much easier.
Conclusion
Go build something.
Don’t read half-baked articles with click-bait titles from an author who probably doesn’t know any better than you. (yes, that’s me - if you don’t get it)