前端三大框架有哪些相同地点和不同点呢?各自的优势又是什么呢?


这三巨头里我真正熟悉的只有React,所以我不敢评价他们各自优势,实际上,我相信没有谁能够讲得清,因为——要么是表达得太肤浅,读者不懂;要么是表达得太多,读者看不过来;要么就是,陷入「XX厉害YY差一些」的争吵,无聊。

不管是谁想要知道这个问题的答案,我觉得不应该听别人怎么扯淡,而是自己亲自去用这是哪个框架去写同一个功能的程序,比如写一个Counter,或者写一个Todo,写了之后就知道各自有什么优点缺点了。

Udemy上有一个免费教程,介绍这三个框架的写法,足够是一个好的开始。

https://www.udemy.com/react-vs-angular-vs-vuejs-by-example/?

www.udemy.com

不用谢。


今天终于做完了,可以写答案了。

github 上 todomvc 项目有各种框架实现的 todomvc

tastejs/todomvc?

github.com图标

不过,我觉得对于框架初学者太『大』了,并没有给初学者展示框架最基本的语法。

所以我自己想了一个简单的 demo(data-flow),就是用 github 的 api 查找用户,然后查找该用户的 followers 和 followings,并且支持翻页。

data-flow

然后分别用 react 、vue 和 Angular 都实现了一遍:

  • riskers/data-flow(React 实现版):
    • redux-thunk + async 版
    • redux-saga
    • redux-observable 实现版
    • MobX 实现版
    • riskers/react-redux-ts-demo: redux-thunk + async 用 typescript 实现版
  • riskers/data-flow-vue: vue + vuex 实现版
  • riskers/ng-data-flow: Angular 实现版

只有用不同框架实现同一个需求,才能知道异同。


本人一直使用的是 react + redux + typescript 技术栈,在去年的时候开始用不同技术实现 data-flow,就有了 redux-thunk / redux-saga / redux-observable / mobx 这些版本

后来,想玩玩 vue ,就做了 vue 版,不一定是标准的写法,如果有写的不对的地方,望指出。

至于 Angular ,是有天猛然看到新闻 Angular 都已经 7 了,2好像还是去年的事吧,就决定用 Angular 再做一遍 data-flow。关于我和 Angular 的故事,感兴趣的可以看下我胡写的 关于 Angular 一点要写点什么


同时用过vue和angular的来回答一下,一开始用的是vue,确实足够轻量,上手简单,但是呢,数据结构一旦复杂起来,就变得不是很好维护,那时候用的时候和typescript还不是整合的很好,有时候不得不用any很蛋疼,那时候用的有个问题是select,用的是iview,需要把select的value绑定一个对象而不是一个字元串的话,不是直接支持(我这样写有警告),折中的办法是value绑定对象的json,取的时候再转回来,这就有点麻烦。但是这个绑定,angular是支持的,它能够直接value绑定对象,因为系统要求的数据模型特别复杂,比如有几十个栏位,栏位又有嵌套另一个class,所以后来不得不转成了angular,不得不说angular确实强大,把后端的设计思路放在angular里用完全没问题,不过和vue比,也有一些不足,初始化速度比vue慢,热载入没vue好等,两者都是很好的框架,主要看适用范围,另外说一句swagger真的神器,能保证前后端的数据结构一致。


  web前端的框架可谓五花八门,多到让你想像不到,但能沉淀下来的不多,而所谓的前端三大框架,指的时Angular、React、Vue,这三个框架时当下最为流行也时最多人用的框架,我故意这样写意在说明三大框架的出现顺序,而且我永远相信要弄懂一个东西,你首先要了解它的来龙去脉,所以下面先说说几个框架各自的特点:

  Angular

  Angular原名angularJS诞生于2009年,之前我们都是用jquery开发,自从angular的出现让我们有了新的选择,它最大的特点是把后端的一些开发模式移植到前端来实现,如MVC、依赖注入等,创新式的双向数据绑定不知简化了我们多少代码,让我们为之疯狂,特别是表单处理方面,从此名声大噪。

  好的框架一般会有两个结果,一个继续不断更新迭代,避免被拍死在沙滩上,一个是被一些大公司收购焕发第二春,angular属于后者被google所收购,且从2.0后改名angular并使用微软的typescript作为开发语言,目前最新版本8.0,照说傍上google与微软这两条大船,前途应该不可限量才对,然而造化弄人,现在angular的市场份额已经被React这个后起之秀和Vue这颗新星远远地甩到脑后。

  React

  React,facebook出品,正式版推出是在2013年,比angular晚了4年,但得益于其创新式的VirtualDOM,性能上碾压angularJS,一经推出,火的一塌糊涂。 特点很多,VirtualDOM、JSX、Diff演算法等,支持ES6语法,采用函数式编程,门槛稍高,但也更灵活,能让开发具有更多可能性。

  Vue

  Vue作为最后推出的框架(2014年),借鉴了前辈angular和react的特点(如VirtualDOM、双向数据绑定、diff演算法、响应式属性、组件化开发等)并做了相关优化,使其使用起来更加方便,更容易上手,比较少适合初学者。网上有很多人说Vue不适合做大型项目,纯属扯淡,Vue在这方面已经优化得很好,当然,大量的响应式属性(监听属性)也许会用一定的性能损耗,但在硬体、网路大力发展的今天,这些细微的性能差异几乎感觉不到。

  说完各自的特点再说共同点

  •   都是渐进式框架,都可以通过配套不同的工具实现更强大的功能
  •   都是组件化开发,都能很好地解决分工与维护的问题
  •   对数据流的处理都是单向的(angularJS为双向,但在angular2后的版本全部采用单向数据流)
  •   ……

  关于前端三大框架的特点其实还有很多,我在这只是做个引子,更多的需要自己去使用去体会才能真正了解三大框架的异同,在这我不会表达xxx比xxx框架优的观点,因为我觉得这样太过于片面,我们也不应该拿关注度来评判一个框架的好坏,angular的关注度低并不影响它是一个伟大框架的地位,每个框架都有其优缺点,存在即合理,只要它能真正解决实际开发过程中的问题,这才是我们想要的框架。


前端目前三大火热的前端框架无非vue,react,angular。都是渐进式框架,都可以通过配套不同的工具实现更强大的功能,都是组件化开发,都能很好地解决分工与维护的问题。

angular

angular的出现是一个跨越式的,它最大的特点是把后端的一些开发模式移植到前端来实现,如MVC、依赖注入等,创新式的双向数据绑定。Angular从一开始就带有很明显的工程化血统,齐全的cli命令,背靠TypeScript,涉及模块、服务以及指令等概念,使用后端的依赖注入思想,特有模板语法。

特点

1.完善的MV*框架,包含模板,数据双向绑定,路由,模块化,服务,过滤器,依赖注入等所有功能

2.Typescript

3.脏检查,对脏数据的检查就是脏检查,比较UI和后台的数据是否一致

比较

MVVM 列表渲染的初始化几乎一定比 Virtual DOM 慢,因为创建 ViewModel / scope 实例比起 Virtual DOM 来说要昂贵很多

大而全大框架,学习成本高。

React

推出了Diff演算法等,提供组件化功能,支持ES6语法,采用函数式编程,门槛稍高,但也更灵活。

特点:

1.子组件重复渲染问题需要手动优化

2.可以使用redux进行状态管理,函数式、不可变、模式化,时间旅行

3.可使用JSX,完全的javascript能力

Vue

Vue作为最后推出的框架,借鉴了angular和react的很多特点,如VirtualDOM、双向数据绑定、diff演算法、响应式属性、组件化开发。

Vue.js的特性:

1. 轻量级的框架

2. 双向数据绑定

3. 指令

4. 插件化

优点:

1. 简单:官方文档很清晰,比 Angular 简单易学。

2. 快速:非同步批处理方式更新 DOM。

3. 组合:用解耦的、可复用的组件组合你的应用程序。

4. 紧凑:~18kb min+gzip,且无依赖。

5. 强大:表达式 无需声明依赖的可推导属性 (computed properties)。

6. 对模块友好:可以通过 NPM、Bower 或 Duo 安装,不强迫你所有的代码都遵循 Angular 的各种规定,使用场景更加灵活。

以上是我的个人见解,希望能帮到楼主。有其他的意见也欢迎大家留言补充。


推荐阅读:
相关文章