对比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前缀约定的方式
其他...