Simple, fast, modular & lightweight MVVM library for building interactive user interfaces.
- 10kb gzipped, no dependency.
- DOM based templates with two-way data binding.
- Precise and efficient DOM manipulation with granularity down to a TextNode.
- POJSO (Plain Old JavaScript Objects) Models that can be shared across ViewModels with arbitrary levels of nesting.
- Auto dependency tracking for expressions and computed properties.
- Auto event delegation on repeated items.
- Flexible API that encourages composition of components.
- Extendable with custom directives and filters.
- Supports partials, transitions and nested ViewModels.
- Plays well with module systems. Primarily Component based, but can also be used with Browserify, as a CommonJS/AMD module or as a standalone library.
- Most Webkit/Blink-based browsers
- Firefox 4+
- IE9+ (IE9 needs classList polyfill and doesn't support transitions)
Component
$ component install yyx990803/vue
Browserify
$ npm install vue
Bower
$ bower install vue
Module Loaders, e.g. RequireJS, SeaJS
Built versions in /dist
or installed via Bower can be used directly as a CommonJS or AMD module.
Standalone
Simply include a built version in /dist
or installed via Bower with a script tag. Vue
will be registered as a global variable.
# in case you don't already have them:
# npm install -g grunt-cli component
$ npm install
$ component install
To build:
$ grunt build
To watch and auto-build dev version during development:
$ grunt watch
To test (install CasperJS first):
$ grunt test
HTML
<div id="demo" v-on="click:changeText">
<p v-text="hello"></p>
</div>
JavaScript
new Vue({
el: '#demo',
scope: {
hello: 'Hello World!',
changeText: function () {
this.hello = 'Hello VueJS!'
}
}
})
Coming soon...
MIT