logo
React题库
React题库

React题库

React和vue的区别

1)相同点
  • 都有组件化思想
  • 都支持服务器端渲染
  • 都有Virtual DOM(虚拟dom)
  • 数据驱动视图
  • 都有支持native的方案:Vue的weex、React的React native
  • 都有自己的构建工具:Vue的vue-cli、React的Create React App
2)区别
写在前面: 前端选型无非是考虑包体积和响应速度两种,目前的前端框架都需要编译这一步骤,分为构建时编译(AOT),宿主环境执行时编译(JIT)【区别:JIT首次加载慢于AOT,因为需要先编译,且体积可能大于AOT,因为运行时会增加编译器代码】,Angular提供了两种方式但是没人用。 借助AOT对模板语法编译时的优化,比如vue3由于模板是固定的,因此在编译时可以分析模板语法中的静态部分和动态部分做出优化,Svelte可以利用AOT直接建立这部分的关系,在运行时当自变量发生变化直接驱动UI变化,但是JSX很灵活导致很难进行静态分析。【react采用prepack进行过改进,但2019年放弃了。也尝试过使用forget自动生成等效于memo等的代码的编译器,但使用模板减少了jsx的灵活性,也有人使用millionJS直接将元素绑定在dom上等】。 既然jsx无法实现AOT,那么就采用了vDom进行优化,并把memo等缓存交给程序员进行work。 前端框架分为元素级(svelte),组件级(vue),应用级(react),对于svelte来说,由于可以确定自变量是否变化,如果组件没有使用store则不会引入这一特性,会使得其对于小型应用比react的体积小,对于大型应用由于元素级直接绑定dom导致体积逐渐增大。vue采用模板语法,建立自变量与组件之间的关系,因此可以受益于AOT。react每次从应用的根节点开始遍历,甚至不知道哪个自变量变了就开始更新,导致不需要细粒度更新和AOT,当然也采用了调度,时间切片等进行优化。 框架性能瓶颈: **react:** 高频率的交互往往会导致明显的性能问题,在 antd 的 Form 组件也使用了将数据下放到每一个 Item 的方式来优化性能,store 中用 useRef 存储数据而不是 useState,antd 内部为每个 Form.Item 定义了 forceUpdate 来强制更新 Item UI。又例如拖拽/resize等事件。此时我们只需要通过操作原生 DOM 的方式来实现对应的逻辑即可。从而绕开高频率的 diff 逻辑。 react 常常因为闭包问题,被各种攻击。认为这是 react 的缺陷。 事实上,原生 DOM 本身在高频交互上也存在明显的性能瓶颈。因此许多前端项目不得不采用抛弃 DOM 渲染的方式来完成整个项目【DOM 换成了 canvas,或者 webGPU..】。但是这些项目我们仍然可以结合 react 来完成,例如著名的前端项目 **Figma**,或者国内有的团队使用 react + skia 的方式来完成一些对性能要求很高的项目 **Solid:** 为了极致的性能体验,完全弃用了虚拟 DOM,也就意味着,他放弃了跨平台的特性。只把主要精力集中在 web 项目上。也就是说,他的全局生态建设,永远也赶不上 react。 **vue:** 丢失响应式,如解构。
本章目录
    logo

    Follow Us

    linkedinfacebooktwitterinstagramweiboyoutubebilibilitiktokxigua

    We Accept

    /image/layout/pay-paypal.png/image/layout/pay-visa.png/image/layout/pay-master-card.png/image/layout/pay-airwallex.png/image/layout/pay-alipay.png

    地址

    Level 10b, 144 Edward Street, Brisbane CBD(Headquarter)
    Level 2, 171 La Trobe St, Melbourne VIC 3000
    四川省成都市武侯区桂溪街道天府大道中段500号D5东方希望天祥广场B座45A13号
    Business Hub, 155 Waymouth St, Adelaide SA 5000

    Disclaimer

    footer-disclaimerfooter-disclaimer

    JR Academy acknowledges Traditional Owners of Country throughout Australia and recognises the continuing connection to lands, waters and communities. We pay our respect to Aboriginal and Torres Strait Islander cultures; and to Elders past and present. Aboriginal and Torres Strait Islander peoples should be aware that this website may contain images or names of people who have since passed away.

    匠人学院网站上的所有内容,包括课程材料、徽标和匠人学院网站上提供的信息,均受澳大利亚政府知识产权法的保护。严禁未经授权使用、销售、分发、复制或修改。违规行为可能会导致法律诉讼。通过访问我们的网站,您同意尊重我们的知识产权。 JR Academy Pty Ltd 保留所有权利,包括专利、商标和版权。任何侵权行为都将受到法律追究。查看用户协议

    © 2017-2024 JR Academy Pty Ltd. All rights reserved.

    ABN 26621887572