最近研究angular发现和vue有许多相似之处,所以暂时总结几点,与大家分享一下:
1)vue仅仅是MVVM中的view层,类似于jQ一样的工具库,不是框架,但angular是框架
2)vue的双向绑定是基于ES5的getter/setter来实现的,一般默认为单向绑定,数据从父组件单向传给子组件,在大型应用中使用单向绑定让数据易于理解;
angular是由自己实现一套模板编译规则,需要进行‘脏’检查,这样就加大了watcher的工作量,只要angular有更新,变动,watcher就要重头开始计算,vue则不需要。所以 ,vue在性能上更搞笑,但是代价是对于ie9以下的浏览器无法支持
3)vue中指令和组件分得更清晰。指令只封装DOM操作,组价就是代表一个自给自足的独立单元—有自己的视图和数据逻辑。但angular中两者有不少相混的地方
4)在API与设计两方面上vue比angular简单的多,更容易上手
5)vue用的指令是v-前缀,angular是ng-,数据绑定的方式也是一样,需要{{}}来渲染
6)vue没有angular制定的规则,允许开发者以希望的方式组织应用程序,它仅是一个视图层,可以将它嵌入一个现有页面而不一定要做成一个庞大的单页应用。在配合其他库方面它给开发者更大的空间,但相应,开发者也需要做更多的架构决策。这使得vue能够适用于各种项目
7)挂载数据方式的不同
//angular挂载数据的方法
var app = angular.module('myApp',[])
//所有的数据和方法均挂载在$scope上
app.controller('custormersCtrl',function($scope){
$scope.list = [{},{},{}]
$scope.method=function(){
console.log("angular")
}
})
//vue挂载数据的方法
var V=new Vue({
el:"#app",
data:{
//数据挂载在data
list:[{},{},{}]
},
//方法挂载在vue的methods上
methods:{
method:function(){
console.log("vue")
}
}
})