Roughly this time two years ago I decided to take NuxtJS (aka Nuxt) for a spin on a pro-bono community project. I really had no preconceptions about Nuxt other than it made scratching my itch of component based development easy. My aim here has always been modularity in mind and leveraging the use of components and plugins as standard, for both code reuse and consistency.
Pathways Anew
I took the plunge and ultimately moved from an Angular world so there was indeed a few uphill marches to exercise the ah for f**k sake sing song of unparalleled developer joy. Prior to diving into Angular or what was actually AngularJS at the time I was really only emerging from backend land into the sheer overwhelming world of frontend development. Prior to this was the dark times: the JQuery years.
So What is Nuxt?
NuxtJS homepage: https://nuxtjs.org/
Nuxt is a meta-framework built on top of VueJS. Indeed if unfamiliar with the frontend landscape at present you may be gasping at just how many levels of abstraction there is to things these days but the intentions are pure.
Nuxt offers a further level of simplicity on top of VueJS and after existing in the ecosystem for some time, none of the coveted features really feel like unnecessary "bells and whistles". In fact, they shine forward as well thought out solutions to common problems built by developers, for developers. The most brilliant of these is the file-based routing system which feels incredibly natural to use, compared to code based routing configurations.
That is only the tip of the iceberg. Features like the SSR capabilities really take the sting out of many deployment configuration battles that I have experienced trying to achieve the same within an Angular context.
Rule of First Best Last
Of course, the concept of Nuxt isn't exactly the newest thing off the shelf. It in my view and experience of it does a few things pretty well that makes it stand out. It does not try to be everything for everyone.
The old saying of being the first or the best applies to things beyond business and it really often drives a hard meaning in software. To do something first in software usually means making a few critical implementation judgments along the way where the second in line learns, learns, learns and learns some more. It is unfortunate however when the first are chastised for these judgments as if we are all born with 20/20 foresight! Give some love for the firsts of the world.
NuxtJS isn't the first, likely not the best as many of these things are subjective and I doubt it will be the last.
The following are a few alternatives to consider:
- NextJS (https://nextjs.org/) is to React what NuxtJS is to Vue
- Angular (https://angular.io/) Angular (ex AngularJS) is an all-in-one web development framework.
Why Use A Framework
Because your own custom my pUrE JaVaScRiPt DiY fRaMeWoRk code is likely not as good as you believe it is and also most certainly not maintainable for others.
If you are only building a few sections, forego using a framework.
Continue to challenge this until it ceases to make sense. If you then decide after 20,000 lines of vanilla JS to stop and terminate your path of obstinacy, hindsight will be there smiling.
Whether to use meta-frameworks or not depends. These are really just feature sets on top of otherwise stable frameworks.
Nuxt, Next, Angular, what have you, all reduce the amount of grind team involved to build beautiful and dynamic web interfaces. These teams hold themselves to a high bar and usually open source their projects. If you don't realise why this is one of the most awesome things ever, I urge you to consider the reality that it was only a few hundred years ago that information, quality education and knowledge was only available to a privileged few that most people could not read or write effectively.