What’s the difference between Angular and React?
- Angular是一个框架,React是一个UI库
- Angular是一个完整的框架,提供了很多开箱即用的功能,比如路由,表单,HTTP Client等。
- React只是一个UI库,只提供了构建用户界面的功能,其他功能需要通过第三方库来实现。React-Router用于路由,Axios用于网络请求,Redux用于状态管理等。
- Angular使用html/TypeScript/css三者分离的方式书写组件,而React使用JSX,将html和js混合在一起。
- 数据绑定,Angular原生支持双向数据绑定,而React不支持,React支持单向数据流,即数据只能由父组件传递给子组件,子组件不能直接修改父组件的数据(但可以通过回调函数实现)。
- 变更检测:
- Angular使用
zone.js
来实现变更检测,它会监控所有的异步操作,当异步操作完成后,会触发变更检测。 - Angular的变更检测基于脏检查,会检查所有的绑定,如果有变化,就会更新视图。
- Angular也提供ChangeDetectorRef类,手动触发变更检测。
- React使用虚拟DOM来实现变更检测,当状态发生变化时,React会重新构建虚拟DOM,然后和上一次的虚拟DOM进行对比,找出差异,然后更新真实DOM。
- React中,状态变化通过setState方法来触发,每次调用setState都会触发重新渲染。
- Angular使用
- 使用体验
- Angular入门比较难,因为它有很多概念,比如组件,指令,管道,服务,依赖注入等。但是一旦入门,写起来就比较顺手,因为大家都是在同一个框架下工作,所以代码风格比较统一。水平高的和水平低的写出来的代码gap更小。Angular上手之后,写代码心智成本低。
- React则不然,它概念很少,甚至连类似于ngIf这种指令都没有,就是纯纯的写js,这就造成了一个问题,不同水平的人写出的代码差异比较大,而且我觉得用React心智成本更高,经常由于忘了写useEffect中的依赖条件导致页面无法更新,或者忘了写key导致列表无法正常渲染等等。
暂时先写这些吧,以后想到了再补充,写得比较泛泛,很多细节还需要填充。