React 与 vue 有很多相似之处, 如他们都是 JavaScript 的 UI 框架, 专注于创造前端的富应用. 不同于早期的 JavaScript 框架 "功能齐全",Reat 与 Vue 只有框架的骨架, 其他的功能如路由, 状态管理等是框架分离的组件.
两者都是用于创建 UI 的 JavaScript 库;
两者都快速轻便;
都有基于组件的架构;
都是用虚拟 DOM;
都可放入单个 html 文件中, 或者成为更复杂 webpack 设置中的模块;
都有独立但常用的路由器和状态管理库;
它们之间的最大区别是 Vue 通常使用 HTML 模板文件, 而 React 则完全是 JavaScript.Vue 有双向绑定语法糖.
vue 和 react 的不同点
在 Vue 组件中, 有几个观念和 React 相差比较大, 我觉得主要有以下这几点:
Vue 组件分为全局注册和局部注册, 在 react 中都是通过 import 相应组件, 然后模版中引用;
props 是可以动态变化的, 子组件也实时更新, 在 react 中官方建议 props 要像纯函数那样, 输入输出一致对应, 而且不太建议通过 props 来更改视图;
子组件一般要显示地调用 props 选项来声明它期待获得的数据. 而在 react 中不必需, 另两者都有 props 校验机制;
每个 Vue 实例都实现了事件接口, 方便父子组件通信, 小型项目中不需要引入状态管理机制, 而 react 必需自己实现;
使用插槽分发内容, 使得可以混合父组件的内容与子组件自己的模板;
多了指令系统, 让模版可以实现更丰富的功能, 而 React 只能使用 JSX 语法;
Vue 增加的语法糖 computed 和 watch, 而在 React 中需要自己写一套逻辑来实现;
react 的思路是 all in JS, 通过 JS 来生成 HTML, 所以设计了 jsx, 还有通过 JS 来操作 CSS, 社区的 styled-component,jss 等; 而 vue 是把 HTML,CSS,JS 组合到一起, 用各自的处理方式, vue 有单文件组件, 可以把 HTML,CSS,JS 写到一个文件中, HTML 提供了模板引擎来处理.
react 做的事情很少, 很多都交给社区去做, vue 很多东西都是内置的, 写起来确实方便一些, 比如 redux 的 combineReducer 就对应 vuex 的 modules, 比如 reselect 就对应 vuex 的 getter 和 vue 组件的 computed, vuex 的 mutation 是直接改变的原始数据, 而 redux 的 reducer 是返回一个全新的 state, 所以 redux 结合 immutable 来优化性能, vue 不需要.
react 是整体的思路的就是函数式, 所以推崇纯组件, 数据不可变, 单向数据流, 当然需要双向的地方也可以做到, 比如结合 redux-form, 组件的横向拆分一般是通过高阶组件. 而 vue 是数据可变的, 双向绑定, 声明式的写法, vue 组件的横向拆分很多情况下用 mixin.
更多前端开发 https://www.html.cn/ 知识, 请查阅 HTML 中文网 !!
来源: http://www.css88.com/qa/vue-js/16016.html