细说vue react angular 区别
联系
组件化
都是数据驱动视图
在开发时,只需要关注数据变化即可
共同的开发套路
组件化,路由,父子组件参数传递,插槽(angular 中就是 ng-content、React 的属性可以是一个组件)
区别
模版 vs JSX
Vue 和 angular 鼓励你去写近似常规 HTML 的模板。写起来很接近标准 HTML 元素,只是多了一些属性。而 react 则崇尚 all in js 所以独创 jsx 的编写风格,但是他们本质上都是一个语法糖,编译之后都是一个可执行的函数
Virtual DOM vs Incremental DOM
在底层渲染方面,vue 和 react 都使用的虚拟 dom,而 angular 却没有使用,查了一下,他好像使用的是 Incremental DOM
增量 DOM: 每个组件都被编译成一系列指令。这些指令创建 DOM 树并在数据更改时就地更新它们. 而组件只是在引用这些指令
函数式编程,声明式编程
在 react 中不可变值贯穿整个框架,如果你要改变数据,那么必须调用 api 去改,这就是函数式编程的思想; 而在 vue 和 angular 中,声明式编程的思想也深入人心,既方便又快捷。这种直接赋值的方式,和用 api 赋值的方式,其实,只是用法不同而已,本质还是数据驱动
社区复杂度
在 angular 和 vue 中,几乎给你想要的全部给你了,而 react 追求的更多的是自力更生,所以,有选择困难症的人才会如此的纠结。
info
活跃的社区,繁荣的生态 这一点是 react 最为骄傲的一点,他清楚自己应该做什么,剩下都交给了社区去做,他不像 vue 一样,生态社区相对稳定,基本上有一套整个社区都认可一些相对固定的方案;而在 react 中可谓百花齐放;angular 又大又全,他不需要借助社区的力量,仅仅靠自己就能实现一个产品从开始到上线的解决方案,比如,他提供完备的单元测试方案,这里你在新建组件的时候都会给你一个测试的 ts,在比如,他会提供开发时所需的所有服务,比如 http 服务,比如 router 服务,比如公共数据管理服务 service,这些 angular 全部完备,他更像是一个后端语言,严格的类型检查,拥抱 ts,以及更好的工程,面向对象编程的思想。angular 很高大全同时也很复杂,angular 官方库给了你一切你想要的,使用 angular 技术栈,基本上你不用对组件选型浪费太多时间精力(对比 react)。
入门难度
angular 工程化最好的框架,,也是由于拥抱 rxjs,和 ts(到现在 ts 的泛型我都搞不明白),也是最难的框架
react 上手也也比较简单,尤其是 16 引入 hooks 之后,号称 api 终结者,但是由于社区太过活跃各种新东西层出不穷,中文文档晦涩难懂,导致相对于 vue 上手也有难度
vue 由于是中国人写的,有着完善的中文文档,和稳定的社区,并且有着亲切的模板语法,应当说是入门相对来说是最简单的了。
三大框架应该怎么选
1、由于 vue 上手快,容易招人,所以,如果项目紧急,公司前端团队整体技术实力薄弱,那么 vue 是个非常不错的选择
2、如果是超大型项目,公司人手又足,技术实力强悍,学习能力强,那么 angular 绝对是不二之选,就可维护来说,angular 绝对是上上选
3、如果团队内部,技术实力还行,但是时间有限,那么 react,和 vue 那都是不错选择,当然更推荐 react 一些,因为写的更爽,那种成就感,不言而喻!之所以不推荐 angular 就项目而言 ng 的局限实在太大。ts ,rxjs ,装饰器,依赖注入…… 学习成本实在太高
4、如果要考虑兼容性,那还是什么都别用的好,老老实实 jquery 吧!