Vue和React有什么区别,那个好

3周前 (11-19 17:56)阅读1回复0
花花
花花
  • 管理员
  • 注册排名3
  • 经验值70255
  • 级别管理员
  • 主题14051
  • 回复0
楼主

vue和react有什么区别呢?下面从那4个角度来说一说!

(1)从编程范式的角度讲

在vue-loader、vue-template-compiler的撑持下,vue能够接纳SFC单文件组织的体例实现组件化;vue有指令,利用指令可以便利地衬着视图,vue表单是双向绑定的;vue组件是基于选项式的编程,常用选项有生命周期、计算属性、侦听器等;vue的组件库非常富贵,自定义属性、自定义事务、自定义插槽是vue组件化的三大根底。浩瀚社区中的vue轮子,在vue架构中被Vue.use注册即可利用。

react的语法根底是JSX,react中没有指令,元素衬着、前提衬着、列表衬着、动态款式都是基于JSX语法的。在webpack情况中,要安拆@babel/core、@babel/preset-react等,实现对JSX的编译。React表单是单向绑定的,保举利用受控表单。组件封拆能够是类组件,也能够函数式组件,此中props是React组件化的核心。

(2)从组件通信的角度讲

在vue组件通信中,跨组件通信的手段极其丰硕且灵敏,常用的通信计划有父子组件通信、ref通信、事务总线、provide/inject、parent/children、listeners/attrs、slot插槽通信等。除此之外,在vue中还能够利用vuex 或 mobx 来实现跨组件通信。总体上来讲,vue的组件通信极其灵敏,自上而下、自下而上都是容易实现的;也恰是因为过于灵敏,那会“诱惑”开发者容易滥用通信手段,招致vue项目闪现出“易开发、难敬服”的现状。

在react中数据是单向数据流,在组件树中数据只能自上而下地分发和传递。state是组件自有的形态数据,props是父级组件传递过来的数据。在react中最最根本的通信计划是形态提拔,还有React上下文也能够实现自上而下的数据流。鉴于react那种数据流的特征,即便集成了Redux仍然会闪现出单向数据流的特征,因而React数据流更容易被办理,共同Redux一路更合适做中大型的项目开发。

(3)从底层原理的角度讲

vue撑持指令是因为背后有vue-template-compiler那个编译器的撑持,把带有指令的视图模板转化成AST笼统语法树,进一步转化成虚拟DOM。vue的响应式原理是利用了 Object.defineProperty 停止了数据劫持,数据劫持发作vue组件的创建阶段,vue的响应式原理和mobx形态办理的响应式原理类似,那种响应式实现最早呈现在 knockout 框架。若是要手写一个简单版本的vue,需要实现Compiler类(用于模板编译)、Watcher类(用于更新视图)、Dep类(用于依赖搜集)、Observer类(用于数据劫持)、Vue类(构造函数)等。

展开全文

react自v16以后发作了良多改变,v16以后底层的“虚拟DOM”不再是简单JSON数据了,React接纳了最新的Fiber(双向链表)的数据构造,做为“协调”(Diff)运算的根底数据。React背后还供给了强大的 react-reconciler 和 scheduler 库实现Fiber链表的生成、协调与调度。比拟vue组件,react在较大组件方面的性能更高。若是要手写一个简易版本的React,其核心要实现以下功用,(用于创建元素)、createDOM/updateDOM(用于创建和更新DOM)、render/workLoop(用于生成Fiber和协调运算)、commitWork(用于提交)等,若是还有撑持Hooks,还得封锁Hooks相关的办法。

(4)从社区开展和将来瞻望的角度讲

vue生态富贵,用户根底大。vue3.0和vite的降生给vue生态增加了新的生命力,同时也给vue开发者带来了空前的挑战。vue3.0浩瀚新特征,以组合API、更友好地撑持TS为代表,使得vue3.0的写法愈加灵敏。上手vue3.0其实不难,但,要想写出强健的心爱惜性更强的vue3.0代码,其实不容易,那需要广阔的前端开发者有更强大的前端根底功,对MVVM有深入的理解和沉淀。

react生态稳步向前,背后有强大的Facebook开发团队,从类组件编程向Hooks编程的转化指了然前进的标的目的。React(v18)呼之欲出,让前端开发者对React更具自信心。在国内,阿里系的React开源项目富贵,给以开发者足够的自信心,至少三五年内深耕React仍然大有可为。

各人若是还有更好的谜底,能够在评论区留言。欢送存眷千锋教导,会继续分享更多前端干货!

0
回帖

Vue和React有什么区别,那个好 期待您的回复!

取消
载入表情清单……
载入颜色清单……
插入网络图片

取消确定

图片上传中
编辑器信息
提示信息