Something every developer looking toward client side JavaScript will pick up on is that there is a huge amount of options for tools, frameworks, ideal project structure, utilities and so on. Frameworks in particular are a big focus with the spotlight being on projects like Google's Angular and Facebook's React, not to mention the huge collection of older options like Backbone.

To add to the hassle of trying to decide which tool best suits you, many developers have very strong opinions about why their framework of choice is not only the best option but the only valid option, giving a completely one-sided perspective. This locks a lot of newcomers into the mindset of there only being one option, restricting their exposure and willingness to learn.

My client side JavaScript experience up until seeking out a more robust approach with a popular framework was about 8 years of hacking together functionality with jQuery and makeshift components that relied on jQuery. I experimented a lot with improving specifics of my workflow with tools like Handlebars, jQuery UI and the 100,000,000 available plugins, but ultimately ended up with the same unmaintainable spaghetti that was all jQuery could offer.

I spent a lot of time experimenting with Angular and Ember, the two popular frameworks dominating StackOverflow at the time (~2013). Both offered a lot of improvements over my existing approach but for whatever reason I just didn't like them.

In late 2014 I noticed a surge of questions on StackOverflow revolving around the Vue.js framework. I spent some time in the documentation and was eager to give it a try especially after reading the authors perception of React and Angular compared to Vue, which I agreed with completely. I played around with it for a few weeks before deciding I was comfortable enough with it to implement it in a project at work. Two years later it was the best decision I ever made; we've used it successfully in over a dozen large applications with a lot of success.

What made it right?

A huge factor in my adoption of a framework was its learning curve. Good JavaScript developers are hard to find and expensive, and my team does not get its hands on enough large JavaScript applications to make the investment worthwhile. The gap between the simplicity of Vue and the other options was a lot larger than the gap between the power Vue offered compared to those options; that is, we could gain a lot from using Vue with minimal investment in training the team and in potential new recruits.

Other highlights include:

  • It is extremely lightweight and efficient.
  • It has recently experienced a huge surge of popularity since the 2.0 release, making it appear as a perfectly credible option when compared to those like Angular and React. This is important because:
  • I wanted confidence in investing long-term in a framework, which would not have been possible if it was not being adopted in the community.
  • Extensions, plugins, assistance and so on are plentiful.
  • It makes myself, my team and the company more credible and professional.
  • It is easy to train, even to novice and intermediate JavaScript developers.
  • It is easy to collaborate on Vue projects with its broken component system (though this applies to the other options too).
  • It does not force you into an "all-in" workflow. Smaller projects can leverage minimal Vue features, completely avoiding complicated boilerplate and configuration. This allows newcomers to transition into Vue across several projects, rather than requiring a large upfront investment.

Overall I am confident it was the right choice. Though I still invest my own time in React, I would not feel comfortable using it on larger projects at work.