Skip to content

对比react

共同点

  • 两者都是MVVM框架(数据驱动视图)

  • 两者都遵循组件化思想. 将页面分成模块开发,便于维护和复用

  • 两者都使用了Virtual DOM. 不管Vue的template还是React的jsx,最后都是生成render函数,而render函数返回的都是Virtual DOM

  • 两者在更新视图上都使用了diff算法. 当视图更新时,根据render生成的最新VNode会和老的VNode做对比,做到尽可能少的更新真实DOM

不同点

  • 响应式原理不同: Vue递归监听data的所有属性,当数据改变时,自动找到引用组件重新渲染;React基于状态机,需要setState驱动新的state替换老的state,而且state改变会导致组件重新渲染,所以 React 中会需要 shouldComponentUpdate(return false) 这个生命周期函数方法来进行控制

  • diff算法不同: 待补充。。。

其他不同

Vue提供的功能更多更灵活,例如directive、computed、watch,这些是React没有的,需要自己去实现. (当然这也和两者设计有关)

Vue的组件是单文件组件sfc,有现成的css隔离方案. React的jsx语法就是all in js, css隔离这块方案一般使用css in js(styled-components)或者BEM前缀约定的方式

其他...

参考1

参考2