1. 组件
React 和 Vue 都擅长处理组件:小型的无状态的函数接收输入和返回元素作为输出。Angular 没有组件化的概念。
2. Typescript,ES6 与 ES5
React 专注于使用 ES6。Vue 使用 ES5 或 ES6。Angular 依赖于 TypeScript。
3. 模板 —— JSX 还是 HTML
React 使用 JSX 模板,把 'HTML' 放到 JS 中。Vue 既可以用 JSX 模板也可以用 HTML 模板,具有“单个文件组件”。Angular 使用 HTML模板,把 'JS' 放到 HTML 中,使用特殊的 Angular 语法(比如 ngIf 或 ngFor)来增强 HTML。
4. 框架和库
Angular 是一个框架而不是一个库,因为它提供了关于如何构建应用程序的强有力的约束,并且还提供了更多开箱即用的功能。Angular 是一个 “完整的解决方案” - 功能齐全,你可以愉快的开始开发。你不需要研究库,路由解决方案或类似的东西 - 你只要开始工作就好了。
React 和 Vue 是很灵活的。他们的库可以和各种包搭配。然而,灵活性越大,责任就越大 - React 没有规则和有限的指导。每个项目都需要决定架构,而且事情可能更容易出错。
Vue 似乎是三个框架中最轻量的。简单易用 —— 源代码非常易读,不需要任何文档或外部库。
5. 状态管理和数据绑定
React 经常与 Redux 在一起使用。Redux 以三个基本原则来自述:
- 单一数据源
- State 是只读的
- 使用纯函数执行修改
Vue 可以使用 Redux,但它提供了 Vuex 作为自己的解决方案。
React 属于单向数据流,Angular 属于双向数据绑定,Vue 支持单向绑定和双向绑定(默认为单向绑定)。
6. 体积和性能
Angular 框架非常臃肿,gzip 文件大小为 143k,而 Vue 为 23K,React 为 43k。
7. 通用与原生 app
React 和 Angular 都支持原生开发。Angular 拥有用于原生应用的 NativeScript 和用于混合开发的 Ionic 框架。借助 React,你可以用 react-native-renderer 来构建跨平台的 iOS 和 Android 应用程序,或者用 react-native 开发原生 app。
8. 学习曲线
Angular 的学习曲线确实很陡。对于 React,你可能需要针对第三方库进行大量重大决策。仅仅 React 中就有 16 种不同的 flux 软件包来用于状态管理可供选择。Vue 学习起来很容易。