vue 和 React 两个 JavaScript 框架都是当下比较受欢迎的, 他们两者之间的区别有哪些? 本篇文章就来给大家介绍一下. 有一定的参考价值, 有需要的朋友可以参考一下, 希望对大家有所帮助.
简单介绍
React--Facebook 创建的 JavaScript UI 框架. 它支撑着包括 Instagram 在内的大多数 Facebook 网站. React 与当时流行的 jQuery,Backbone.JS 和 Angular 1 等框架不同, 它的诞生改变了 JavaScript 的世界. 其中最大的变化是 React 推广了 Virtual DOM(虚拟 DOM) 并创造了新的语法 --JSX,JSX 允许开发者在 JavaScript 中书写 html(译者注: 即 HTML in JavaScript).
Vue 致力解决的问题与 React 一致, 但却提供了另外一套解决方案. Vue 使用模板系统 (弱化的 jsx), 使其对现有应用的升级更加容易. 这是因为模板用的就是普通的 HTML, 通过 Vue 来整合现有的系统是比较容易的, 不需要整体重构. 同时 Vue 的学习曲线相对 react 来说更加容易.
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.
社区活跃度
从两者的 GitHub 表现上来看
可以看出 vue 的 star 数量已经是前端框架中最火爆的. 从维护上来看, react 是 Facebook 在维护, 而 vue 现阶段虽然也有了团队, 但主要还是尤雨溪在维护贡献代码, 并且阿里巴巴开源的混合式框架 weex 也是基于 vue 的, 所以我们相信 vue 未来将会得到更多的人和团队维护. 根据不完全统计, 包括饿了么, 简书, 高德, 稀土掘金, 苏宁易购, 美团, 天猫, 荔枝 FM, 房多多, Laravel,htmlBurger 等国内外知名大公司都在使用 vue 进行新项目的开发和旧项目的前端重构工作.
总结比较速览
更多 web 前端开发 https://www.html.cn/ 知识, 请查阅 HTML 中文网 !!
来源: http://www.css88.com/qa/vue-js/16286.html