相同点
- 都是javascript库
- 组件化,现在有了Vue3.2,可重用性都非常好
- 都使用了虚拟DOM + Diff算法, 虚拟DOM的价值:不在于提升了DOM的渲染速度,而是提供了函数式编程以及跨平台的准备
- 使用了单项数据流,数据驱动视图
- 函数式编程
不同点
| 项目 | React | Vue |
|---|---|---|
| 维护团队 | 脸书 | 尤大大团队 |
| 跨平台开发 | 成熟的React Native | Vue的Weex仍在不断发展 |
| 学习成本 | 学习成本相对较高 | 相对简单,语法糖比较多 |
| 性能 | 。。。 | 尤大大说Vue3性能更好,Diff算法升级以及响应式原理改用了proxy实现 |
| 语法复杂性(针对JS相对薄弱的人) | 复杂 | 简单 |
| 视图 | 倾向于JSX拥抱JS | 模板拥抱HTML |
| 响应式原理 | 通过监听setState触发重新渲染虚拟DOM,然后根据Diff算法,更是视图 | 遍历Vue实例的状态树,通过Object.defineProperty给每一个属性重写setter 和 getter, watcher通过getter收集需要观察的状态,当触发setter时,发送一个提醒给watcher,然后再更新虚拟DOM,通过Diff算法,更新视图 |
| 其他 | 生态十分强大,官方文档非常优秀 | 社区也很大,但不如React,仍在快速发展中;官方文档不如React,但也非常不错了 |