--- title: 'Why we chose Vue.js' author: Jacob Schatz author_twitter: jakecodes categories: engineering image_title: '/images/default-blog-image.png' description: 'Why GitLab went with Vue.js' twitter_image: '/images/tweets/why-choose-vuejs.png' --- I had a great conversation with an interviewee a few weeks ago about how one should go about choosing a JavaScript framework. He pointed out that when a major software company releases their secret sauce, there is going to be hype. Devs think to themselves, "That company writes JS differently than me, and they are prominent and successful. Is their way of writing JS better than mine? And therefore must I adopt it?" Their secret sauce may be awesome, but don't assume awesomeness just because everyone else gets excited. You wouldn't copy and paste an answer from StackOverflow, without understanding it, so why copy and paste an entire framework? Which brings me to our decision to use [Vue.js](https://vuejs.org/) at GitLab. ## Simplicity and ease of use Primarily what drew us to Vue.js is that it allows our team to _easily_ write _simple_ JavaScript. Getting started with Vue.js is extremely easy. Its source code is very readable, and the documentation is the only tutorial you'll ever need. You don't need external libraries. You can use it with or without jQuery. You won't need to install any plugins, though many are available. I like vanilla Vue.js personally, although I can reach for vue-resource when I need it. Hooking Vue.js up to existing code is very straightforward. There's no magic to Vue.js -- it's `Object`s all the way down. I talk to a lot of JavaScript devs and I find it really interesting that the ones who spend the most time in Angular tend to not know JavaScript nearly as well. I don't want that to be me or our devs. Why should we write "not JavaScript?" I remember back when I was using Backbone, I had to really force myself to stay DRY, because it's really a blank canvas. Vue.js does not make large assumptions about much of anything either. It really only assumes that your data will change. But Vue.js comes with the perfect balance of what it will do for you and what you need to do yourself. If Backbone was anarchy (no one in charge) and Angular is a dictatorship (the Angular team is in charge), I'd say Vue.js is like socialism: you are definitely in charge, but Vue.js is always within reach, a sturdy, but flexible safety net ready to help you keep your programming efficient and your DOM-inflicted suffering to a minimum. To give you an idea of what I mean, here's a simple [Codepen](http://codepen.io/jschatz1/pen/dpQkpx): ```html