1. React和Vue
React和Vue有许多相似之处,它们都有:
- 使用了Virtual DOM (虚拟DOM)
- 提供了响应式和组件化的视图组件
- 专注于核心库,而将其他功能如路由和全局状态管理交给相关的库
- 二者的运行时速度都很快
React与Vue不同之处:
1. 在React应用中,当某个组件的状态发生变化时,它会以该组件为根,重新渲染整个组件子树。在Vue中,组件的依赖是在渲染过程中自动追踪的,所以系统能精确知晓哪个组件确实需要被渲染。
2. 在 React 中,所有的组件的渲染功能都依靠 JSX。JSX 是使用 XML 语法编写 JavaScript 的一种语法糖。事实上 Vue 也提供了渲染函数,甚至支持 JSX。然而,我们默认推荐的还是模板。任何合乎规范的 HTML 都是合法的 Vue 模板。
3. CSS 作用域在 React 中是通过 CSS-in-JS 的方案实现的 (比如 styled-components 和 emotion)。这引入了一个新的面向组件的样式范例,它和普通的 CSS 撰写过程是有区别的。Vue 的单文件组件里的样式设置是非常灵活的,单文件组件让你可以在同一个文件里完全控制 CSS,将其作为组件代码的一部分。
4. Vue 的路由库和状态管理库都是由官方维护支持且与核心库同步更新的。React 则是选择把这些问题交给社区维护,因此创建了一个更分散的生态系统。
5. React 学习曲线陡峭,在你开始学 React 前,你需要知道 JSX 和 ES2015,因为许多示例用的是这些语法。Vue开发者只需不到一天的时间阅读指南就可以建立简单的应用程序。
2. Angular和Vue
不同之处:
- 在体积方面,Vuex+VueRouter的体积大概再30KB左右,而angular-cli默认生成的大小在65KB左右
- Vue 相比于 Angular 更加灵活,Vue 官方提供了构建工具来协助你构建项目,但它并不限制你去如何组织你的应用代码。
- Angular 事实上必须用 TypeScript 来开发,因为它的文档和学习资源几乎全部是面向 TS 的。TS 有很多好处——静态类型检查在大规模的应用中非常有用;Vue可以比较灵活地选择js或者ts来开发项目