# 1 Easy to get started
# 2 Component Based
At the core of Vue.js are components, small self-contained pieces of code that can be reused to build a large-scale application. I know, I know components are so hot right now. The way that Vue’s components are defined and used are modelled after the W3C Custom Elements spec, which is part of the new Web Components Spec. This means that using Vue.js and it’s component will be similar to native browser functionality in the future. In reality you get to define your components as custom HTML tags that Vue renders and into full-featured components. I think it fits remarkably well with the HTML markup paradigm. Making it easy to reason about the position and composition of the components in your application.
A slightly more advanced feature but no less awesome feature of Vue.js components are Single File Components, using tools like Vueify allow you to define the template, logic and styling of your component in a single file. No more context switching and jumping to different files to make a change to the style of your component. This feature reminds me of the work on the HTML Shadow DOM.
# 3 Solves the right problem
On a theoretical level I feel that Vue.js solves the right problem for me, it does not replace your entire page with a SPA. You can use Vue as needed, on small sections of your site. This makes sense to me for the kind of projects I work on.
<hand-wavy-statement> Let’s face it, most front-end developers are not working on Google or Facebook scale applications that require hundreds if not thousands of engineers to collaborate safely on.</hand-wavy-statment>
Vue.js does not force you into complex setup to define your app’s architecture and data-store. It allows you to just get started fast and add the features that you need as you need them.
# 4 Good Resources
The way I learn new technology is usually by watching videos, reading a book on the subject and trying out some small projects. At first with Vue, I stated with Jeffrey Way’s screencasts on Laracast, which offer a great introduction to Vue. Then I dove staring into a project.
In the beginning a little lost and slow, but then looking at the official Vue.js guide and documentation everything became very clear. Vue has very good documentation that makes it a breeze to understating how to use Vue.
Another important aspect of Vue.js development are the error messages, if you use the non-minified source code of the Vue library you will get nice descriptive error messages in your console.
More resources can be found on the awesome-vue repository.
#5 Awesome tooling
Some of the tools that caught my attention are vue-cli for quick scaffolding, vue-router, vue-resource for making HTTP and Ajax requsts, vue-validator for data validation, vuex for flux-inspired architecture.
But the tool I am using the most in my day to day development with Vue is the vue-devtools. A Chrome extension that allows to inspect and interact Vue components, and it’s also written in Vue.
# 6 Minimal Overhead
In light of the recent Leftpad debacle, I was wary of un-needed dependencies in my projects. Vue.js does not disappoint in this department, it is designed to be light and had no third-party dependencies, wow! This is a clear win for Vue and this is what allows Vue to be improved bettering performance and keeping the API stable.
In addition Vue plays nicely without other libraries, need to bring in jQuery and Bootstrap. No problem Vue.js plays nicely with them, making the integration a breeze.
One of the biggest counterpoints I can see against Vue.js is the size of the team devoted to it. It does not have Facebook’s or Google’s coffers at it’s disposal to fund Evan’s time. And hey he is a guy, so the bus factor does not work in Vue’s favour. But Evan is taking stability very seriously, the Vue.js community is growing and the Patron Campaign is going strong.
There are many good things on the horizon for Vue, the new release Vue 2.0 is now in RC sate and it offers many performance improvement with an implementation of a Virtual DOM. This change ought to bring up to a 4X performance improvement for Vue.
Anyhow, don’t take my word for it, go play around with Vue.js to form your own opinion, let me know what you think.