react和vue的区别

292 阅读1分钟

共同点

  • Virtual DOM
  • 组件化
  • 路由和状态管理独立于框架之外
  • props父子组件传值(react可以传方法甚至组件)
  • 服务端渲染
  • 组件数据流向是单向的(父 -》 子)

区别

  • 难易程度
    vue:快速上手,应用于已有项目比较容易
    react:学习成本相对较高,与已有项目结合相对复杂

  • 模板
    vue:template
    react: JSX

  • 条件渲染、列表渲染 vue:指令:v-if、v-for...
    react: {visible && }、{arr.map()}...

  • diff算法实现

  • 构建工具
    vue: vie-cli
    react: create react app

  • chrome开发工具
    vue: vue-devtools
    react: react-devtools

  • 配套框架维护(路由、状态管理)
    vue: 官方
    react: 社区

  • 开发原生应用
    vue: weex
    react: React Native

  • 更新渲染
    vue: 粒度更细,默认优化(数据劫持,收集依赖)
    react: 需要通过pureComponent或shouldComponentUpdate或memo手动优化

  • 响应式(数据 =》 UI)
    vue: js原生操作data
    react: setState或hooks api(推荐函数式编程)

  • 双向数据绑定(UI => 数据) vue: 提供v-model语法糖
    react: 需要开发者手动绑定事件,通过setState修改数据

  • 逻辑复用
    vue: mixin、自定义指令
    react: 从mixin到高阶组件再到renderProps

  • 组件间传值 vue: props、$ref、provide + inject、vuex、++++++ $emit $parent $children、$attrs、$listeners
    react: props、ref、Provider + Consumer、 redux

  • 应用场景
    vue: 小而精
    react: 大型复杂

  • 社区活跃度,react更胜一筹

  • typescript支持,react更胜一筹(vue3有改进)

  • 模式 vue:MVVM
    react: MVC

类同

  • 数据更新并渲染后执行相应的操作
    vue: nextTick
    react: useEffect

  • 组件标签中间插值
    vue: 插槽slot
    react: props.children

  • 祖孙传值
    vue: provide/inject
    react: context

更多资料

  1. www.cnblogs.com/yangyangxxb…



后续会继续补充,欢迎指正~