叁.1.2 React、Vue和Angular对比

1. React VS Vue

React 的哲学是:如无必要,勿增实体

Vue 的哲学是:什么好用,给你什么。 Vue 会自动帮你绑定 this,React 不会,因为 JS 能做; Vue 会自动帮你合并 class 和 style,React 不会,因为 JS 能做; Vue 会给你的 data 创建 getter/setter,React 不会,因为 JS 能做; Vue 会给你提供 v-if / v-for / v-show,React 不会,因为 JS 能做; Vue 会给你提供 computed / watch / methods,React 不会,因为 JS 能做。

那么 React 到底提供了什么? 只提供了一条让你用原生 JS 解决所有 UI 问题的途径。

很多新人反馈: Vue 用久了,好像不会写高级的 JS 了,只会一些简单的,居然就能完成工作。 而 React 用久了,就发现 JS 的语法特性真多啊,学都学不过来。

by 方应杭

2. React VS Angluar

你会发现 Angular 在逐渐的弥补自身框架的不足,其他框架也在弥补他们自身的不足,他们都在互相吸取,互相学习,大家最终会越来越趋同。

喜欢装饰器,Class Component,Service Class 风格的,可以选择 Angular。

喜欢纯函数,Function Component,Hooks 的,可以选择 React。

没有啥偏好的使用 Vue,想用啥用啥。

by 徐海峰

Angular 的初始曲线对于搞 java 的人来说确实不高,因为那一套概念都是 java 里面有的,而且搞 java 的都已经习惯繁琐了。但是对于不搞 java 的人来说,就很烦了,更关键的是在我看来前端根本就不应该学 java 那一套。

Angular 的后续曲线也不低,因为它的可优化性比较糟糕,以至于你不理解它的内部运作原理就很难避免各种性能坑。

React 上手的曲线也看人。对于习惯了服务端模板的人来说,要接受 JSX 是一个挑战;但是对于搞函数式的人来说,简直就是太自然了,因为 JSX 能让你把模板看做一个纯函数。过了这个坎后上手写两个例子,React 还是相对简单的。但是这也是个假象。接下来要搞『正经』的 React 应用了,突然出现了 Node,CommonJS, Webpack 一堆东西。写过 Node 的人会觉得哦哦,太自然了。没接触过 Node 的人就像没接触过 java 的人初学 Angular 一样:这些都是什么鬼。再往下,终于把构建环境搭好了,这时候你会发现 React 文档里的东西你已经也基本看完了,你以为你这就叫『学会 React』了?其实这时候你还是不知道怎么用 React 写一个应用,因为 React 本身不管这些事情,所以你要开始跳入 React 社区的大坑,开始学习 react-router, react-hot-reload, Flux 及其 N 种实现 (voronianski/flux-comparison · GitHub) , CSS in JS 及其 N 种实现 (https://github.com/MicheleBertoli/css-in-js),Immutable-js, GraphQL, Relay... 还有 context 这种大家都在用但是没有官方文档的功能...(现在终于有文档了)用 Redux 又开始一堆概念了,actions, action creators, reducers, containers, higher order components... 然后现在又开始配着 generator 搞 redux-saga,搞着搞着你可能还会被 Clojure/Elm 吸引过去,跳入函数式的大坑... 这个曲线比起 Angular,只能说有过之而无不及... 当然,因为学习过程中多了很多可以用来装逼的资本,还是有一定的激励效果的,不像 Angular 学了半天也没什么能吹的。

by 尤雨溪