Why doesn’t Vue.js support IE8?
So Vue.js modifies my data?
Yes and No. Vue.js only converts normal properties into getters and setters so it can get notified when the properties are accessed or changed. When serialized, your data will look exactly the same. There are, of course, some caveats:
console.logobserved objects you will only see a bunch of getter/setters. However you can use
vm.$log()to log a more inspectable output.
You cannot define your own getter/setters on data objects. This isn’t much of a problem because data objects are expected to be obtained from plain JSON and Vue.js provides computed properties.
Vue.js adds a few extra properties/methods to obsesrved objects:
$delete. These properties are inenumberable so they will not show up in
for ... in ...loops. However if you overwrite them things will likely break.
That’s pretty much it. Accessing properties on the object is the same as before,
for ... in ...loops will work as normal. 99.9% of the time you don’t even need to think about it.
What is the current status of Vue.js? Can I use it in production?
Vue.js has undergone some major rewrite for the 0.11 update, and we are now working towards the 1.0 release. Vue.js is already being used in production at companies like Optimizely.
Is Vue.js free to use?
Vue.js is free and fully open sourced under the MIT License.
What is the difference between Vue.js and AngularJS?
There are a few reasons to use Vue over Angular, although they might not apply for everyone:
Vue.js is a more flexible, less opinionated solution. That allows you to structure your app the way you want it to be, instead of being forced to do everything the Angular way. It’s only an interface layer so you can use it as a light feature in pages instead of a full blown SPA. It gives you bigger room to mix and match with other libraries. This is probably the most important distinction.
Vue.js is much simpler than Angular in general, so you can learn almost everything about it really fast and get productive.
Vue.js has better performance because it doesn’t use dirty checking. Angular gets slow when there are a lot of watchers, because every time anything in the scope changes, all these watchers need to be re-evaluated again. Vue.js doesn’t suffer from this because it uses an event based observing mechanism, so all changes trigger independently unless they have explicit dependency relationships.
Vue.js has a clearer separation between directives and components. Directives are meant to encapsulate DOM manipulations only, while Components stand for a self-contained unit that has its own view and data logic. In Angular there’s a lot of confusion between the two.
But also note that Vue.js is a relatively young project, while Angular is battle-proven, Google-sponsored, and has a larger community.
What makes Vue.js different from KnockoutJS?
First, Vue provides a cleaner syntax in getting and setting VM properties.
On a higher level, Vue differs from Knockout in that Vue’s component system encourages you to take a top-down, structure first, declarative design strategy, instead of imperatively build up ViewModels from bottom up. In Vue the source data are plain, logic-less objects (ones that you can directly JSON.stringify and throw into a post request), and the ViewModel simply proxies access to that data on itself. A Vue VM instance always connects raw data to a corresponding DOM element. In Knockout, the ViewModel essentially is the data and the line between Model and ViewModel is pretty blurry. This lack of differentiation makes Knockout more flexible, but also much more likely to result in convoluted ViewModels.
What makes Vue.js different from React.js?
React.js and Vue.js do have some similarity in that they both provide reactive & composable View components. However the internal implementation is fundamentally different. React is built upon a virtual DOM - an in-memory representation of what the actual DOM should look like. Data in React is largely immutable and DOM manipulations are calculated via diffing. On the contrary data in Vue.js is mutable and stateful by default, and changes are triggered through events. Instead of a virtual DOM, Vue.js uses the actual DOM as the template and keeps references to actual nodes for data bindings.
Another issue with React is that because DOM updates are completely delegated to the Virtual DOM, it’s a bit tricky when you actually want to control the DOM yourself (although theoretically you can, you’d be essentially working against the library when you do that). For applications that needs complex time-choreographed animations, this can become a pretty annoying restriction. On this front, Vue.js allows for more flexibility and there are multiple FWA/Awwwards winning sites built with Vue.js.
I want to help!
Great! Read the contribution guide and join discussions on IRC (#vuejs).