Front-end vomit in amusement park rides
To those those who rather look at people fainting or vomiting in amusement park rides, the conclusion of this write up is that I really like VueJS. On with the show.
Over the past 6 months I’ve been trying out a lot of different Javascript front-end frameworks, torture in short. They tend to reinvent themselves completely every so often to stay ahead of the hype, most of them are more opinionated than Stallman and they’re all so jacked up on software patterns that developing with one feels like practising yoga in a straitjacket.
In previous years I’ve invested many hours in Google’s Angular but now with the release of Angular2 those hours turned into a waste of time. Angular2 is actually more Google’s ReactJS, it’s completely different from Angular. Of course they have their own syntax sugar now as well, it’s called TypeScript (Microsoft opensouce project), and it’s great, trust me… Of course Facebook’s ReactJS has JSX and that’s great, believe me. Unless you rather go es5 or es6 maybe es2015 but then maybe es2016 is nice or why not just go for straight up es2017, wait why not just tie everything together with Babbel and Browserify and install our dependencies with NPM and Bower and glue it all together with Gulp. No Grunt you peasant! Sjees have you never heard of Webpack or something?! No no no no NO! This thing runs in Rails I have to take the asset pipeline into account… Right! So, just install browserify-rails (project now in maintenance mode looking for new maintainer), than next to your normal Gemfile dependencies you just use a package.json for your front-end dependencies. The only thing you have to do now is again install all the transpilers and set it all up in your application.rb and wait 5 minutes for everything to compile on page load! Sweeeeet!
But wait! Why do we need those frameworks? I mean seriously I just wrote a contact form and it took me 3 weeks, the build file has more lines of code than the average Linux kernel. How is this useful? Well it’s extremely reusable and modular of course! It’s not like you come back to it after a week and you have absolutely no clue whats going on anymore… Also, it’s really easy to find developers that are already familiar with this framework… Yeah right, are you sure it isn’t just resume decoration? Isn’t fluffing something they only do in the Porn industry, or is this an important skill as front-end developer now as well?
So I wasn’t really open to try out new things anymore. I was working on a project using ReactJS which seemed fine until I ran into a whole host of problems which just made me watch LGR on Youtube all day (seriously go check out Lazy Game Reviews). When I finished with that I started watching the 8-bit guy, I got bored with that and decided to watch people fainting in amusement park rides. Then one day, when I started watching people puking in amusement park rides I came to a sudden realization; I prefer to look at videos of people vomiting in amusement park rides than code ReactJS or Angular. So like you do with regurgitation, I flushed both frameworks down the toilet, brushed my teeth and reseated myself behind my keyboard.
I decided to create a simple message bus in combination with a data store and just do a home brew Flux like implementation. That was easy enough, next step some form of the observer pattern to update the DOM. At that point I realized I didn’t really want to deal with browser compatibility issues so I went looking for lightweight 3d party tooling. In the past I used KnockoutJS which would fit the bill nicely. Looking at the API docs of KnockoutJS I remembered it can get really messy when your data set grows. Right, more searching! I vaguely remembered somebody talking to me about VueJS the word “light” was mentioned, the rest of the conversation registered as “blah blah blah blah”, good enough to see if it would fit my needs.
VueJS looked like onajf (Oh no another Javascript framework) but skimming the documentation it seemed I didn’t have to use everything. No long dreary chapters of opinionated blah blah. The documentation seemed clear the code examples readable. So I just tried a vanilla Javascript component, it felt nice it looked nice and it worked with my own purpose build message bus and datastore. I took it a step further and created a .vue component file which felt like creating a webcomponent and gave me a Polymer flashback (btw, forgot to mention Polymer is cool too). Hey! This is something I can get used to!
So I’ve been riding triangle fields of green these last 2 weeks! I never ever thought I would say this about a front-end framework but, VueJS rocks! It’s the Bohemian Rhapsody of front-end frameworks (granted the competition is mostly John Bon Jovi singing he’s a cowboy, but still).
I completely skipped over Polymer, which I also enjoyed but which was not an option due to it being a pain to get going in Rails and sjeez Bower for component dependencies… naaaaaah.
In closing, I say again! VueJS VueJS hurray!
(P.S. I’ve done it, I have become just as opinionated as a front-end framework)