The Endless War of JavaScript Frameworks
Certainly in those days, the heat about what is the best JavaScript Frameworks intensifies from day to day. Often I do get asked what I think the right choice would be. I find it personally quite funny to read all of those Reddit and Blog posts, finding whatever crazy argument to make clear their opinion is the right one. It reminds me of the big quest the PHP Community had to solve when the PHP Framework wars era happened. A fundamental problem although is that there is not the one solution.
One might think that I as a Aurelia Core Team member should take a stand and shout out into the world that Aurelia is the best thing since sliced bread. Well to be honest it is damn good but … toasted sliced bread … mmmh.
For one moment lets put all the temper to ground and focus on what really matters most to me. Its pragmatism and getting the job done. Now that might sound like I’m cheering for quick and dirty solutions and don’t care about proper abstractions, beautiful architecture and so on. And you know what, sometimes I really don’t :)
Its not a matter of black and white, neither is it a scale of gray, but in real life its a palette of all those colors, making your own project so unique. Always keep in mind that your project is not only the software you write, but also the environment, resources and time you have at your disposal.
What I realize more and more is that what really matters is not the framework, but mastery of JavaScript , or for the type-heavy guys/gals TypeScript. There is so much in there and DOM is such a treasure chest, full of shiny and some less shiny gems.
That brings me to the second point. As a WebDeveloper, sorry I meant Developer working with browsers and web technologies, I think you really should embrace the Document Object Model. Yeah from time to time speak it out loud. Its an Object Model for your Document. So instead of abstracting that so far away to be able to create magic universal apps, which will load you up with a pile of work and most of the time wont see anything beside the browser, just focus on your existing experience, the DOM. Learn how to manipulate it, to properly design your structure and understand the essence of what makes your WebApp. Its not the best model, but certainly its good enough and meanwhile also damn fast, so forget about all those Virtual DOM and start manipulating the original more effectively using MicroTask Queues and Mutation Observers. That said stick to web standards. By learning those you bring yourself in a so much better position because YOU DO UNDERSTAND THE THINGS BELOW THE SURFACE. Learning a framework is a matter of a few weeks. If it takes longer its most of the time not worth it.
So if you read carefully I think you’ve come to the conclusion that my preference is VanillaJS. But if I have to choose a Framework, I’d personally pick the one fitting best into my project. Personally that would be one that doesn’t get in the line between me and my tasks. The less my VanillaJS gets flavored with whatever Frameworktaste the better.
So to conclude this post, as such Aurelia is my personal first candidate and the reason why I’m willing to invest time and effort to make it even better. Its not about the enterprise support, nor is it about a nicer templating language or better support for feature X and Y. Its first and foremost because when I write apps with Aurelia, actually I hardly ever find framework specific code in my scripts.
Now go out, take a look at all those frameworks and make up your choice based on what is important for you and your project. As always I’m happy to read about your opinions in the comments below.
photo credit: Peter Dargatz: Fighting Goats via Pixabay (license)