Vue和React的比较区别
在工作中,经常会有人问我Vue和React的区别,他们的优缺点,在真正开发过程中,到底用哪个框架比较好?其实我也不知道,然后这段时间看了许多文档,也还是有很多地方没看懂,以下只是自己消化理解的一些Vue和React的区别联系:1. 数据React:单项数据流Dom元素渲染依赖于state,但改变State并不会影响或者改变渲染出的Dom元素。只有通过setState才能重新走渲染流程。Re...
在工作中,经常会有人问我Vue和React的区别,他们的优缺点,在真正开发过程中,到底用哪个框架比较好?其实我也不知道,然后这段时间看了许多文档,也还是有很多地方没看懂,以下只是自己消化理解的一些Vue和React的区别联系:
1. 数据
React:单项数据流
Dom元素渲染依赖于state,但改变State并不会影响或者改变渲染出的Dom元素。只有通过setState才能重新走渲染流程。
React是单向数据流,数据主要从父节点传递到子节点(通过props)。如果顶层(父级)的某个props改变了,React会重渲染所有的子节点
React推崇的是函数式编程和单向数据流:给定原始界面(或数据),施加一个变化,就能推导出另外一个状态(界面或者数据的更新)。他的每一个组件更像是一个函数。一个呈现出来的页面是由多个独立的、可复用的组件构成的。
Vue:双向数据绑定与单项数据流
Dom元素绑定的Data值,当发生改变后,Vue的响应式机制会自动监听Data的变化重新渲染。即vue实例中的data与其渲染的DOM元素的内容保持一致,无论谁被改变,另一方会相应的更新为相同的数据。
vue不推荐子组件修改父组件的数据,直接修改props会抛出警告。一般都是通过调用父组件传过来的父组件中的方法来改变props。
利弊:
React需要手动setstate后才能出发渲染,Vue更强调自动化响应式,也因此Vue中的Watcher在Data特别多的时候会出现卡顿现象。这也是大型项目(state很多)更适合用React而非vue的一个原因。
2.虚拟Dom
Virtual DOM是一个映射真实DOM的JavaScript对象。当新一项被加进去这个JavaScript对象时,一个函数会计算新旧Virtual DOM之间的差异并反应在真实的DOM上。计算差异的算法是高性能框架的秘密所在,React和Vue在实现上有点不同。
Vue宣称可以更快地计算出Virtual DOM的差异,这是由于它在渲染过程中,会跟踪每一个组件的依赖关系,不需要重新渲染整个组件树。
而对于React而言,每当应用的状态被改变时,全部子组件都会重新渲染。当然,这可以通过shouldComponentUpdate这个生命周期方法来进行控制(你可以通过这个方法控制组件是否重新渲染。如果返回 false 组件就不会重新渲染),但Vue将此视为默认的优化。
3.JSX和模板
React与Vue最大的不同是模板的编写。Vue鼓励你去写近似常规HTML的模板。写起来很接近标准HTML元素,只是多了一些属性。
Vue要使用HTML模板template,而React则是完全相反,要求开发者借助JSX在JavaScript中创建DOM。
总的来说就是React---- all in js。html还是css都是通过js实现。但是vue是把html,css,js组合到一起,用各自的处理方式,vue有单文件组件,可以把html、css、js写到一个文件中,html提供了模板引擎来处理。
4.构建工具
React和Vue都有自己的构建工具,你可以使用它快速搭建开发环境。React可以使用Create React App (CRA),而Vue对应的则是vue-cli。两个工具都能让你得到一个根据最佳实践设置的项目模板。
由于CRA有很多选项,使用起来会稍微麻烦一点。这个工具会逼迫你使用Webpack和Babel。而vue-cli则有模板列表可选,能按需创造不同模板,使用起来更灵活一点。
5.React.Native vs ???
React Native能在手机上创建原生应用,React在这方面处于领先位置。使用JavaScript, CSS和HTML创建原生移动应用,大大降低了移动应用的开发成本啊,web前端也可以写移动应用,想想都激动。这是一个重要的革新。Vue社区与阿里合作开发Vue版的React Native——Weex也很不错,但仍处于开发状态且并没经过实际项目的验证。
6背后的团队
关于Vue还需要说的是,Vue主要是由一位开发者进行维护的,而不像React一样由如Facebook这类大公司维护。
这些大概就是通过自己的理解,对比了一下Vue和React的一些主要概念和实现方式写出来的一些体会总结,主要是为了加深自己理解,有些东西自己水平有限,能够消化的有限。以后会继续补充。
更多推荐
所有评论(0)