Vue.js 不是一个框架,它只是一个提供 MVVM 风格的双向数据绑定的库,专注于 UI 层面。
Vue.js 提供的核心是 MVVM 中的 VM,也就是 ViewModel。ViewModel 负责连接 View 和 Model,保证视图和数据的一致性。
如果你用过 AngularJS,你会发现 Vue.js 同时还借鉴了 Angular 的 directive 和 filter 的概念,但是 API 要简单易懂得多,整体也轻巧得多。在组件化这一点上,Vue.js 和 facebook 的 React.js 更为接近,可以定义可复用和嵌套的组件类,并且可以在模板中声明式地使用组件。
Vue.js 的最大特点就是上手简单:你不需要理解 Angular 的依赖注入是什么东东、$digest 和 $apply, preLink 和 postLink 有什么区别,
也不需要像 React 那样编译 JSX,更不需要像 Knockout 那样把所有的属性都变成函数… 在 Vue.js 的定义中,View 就是用户实际看到的 DOM 元素,而 Model 就是原生的JavaScript 对象。作为开发者,真正需要关注的只有 ViewModel,也就是 Vue.js 所提供的Vue构建函数:
VueJs看上去就像是渲染了个模板而已,但其实 Vue.js 已经建立了 DOM 和数据之间的连接,此时任何对data.message的改动,都会触发 DOM 的更新。而更神奇的是v-model这条 directive 是双向的数据绑定,当用户在输入栏里打字的时候,数据会被同步回data.message当中去。
另外方便的是,返回的demo这个 ViewModel 对象会自动代理data上的属性,所以你可以直接运行demo.message='what!',能够得到和直接操作数据一样的结果。这个特点在之后会常常用到。