0%

angular-vs-react

What’s the difference between Angular and React?

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

暂时先写这些吧,以后想到了再补充,写得比较泛泛,很多细节还需要填充。