React特性简介 | 青训营笔记

83 阅读2分钟

React特性简介 | 青训营笔记

React——用于构建用户界面的JavaScript库

⭐声明式

告诉机器你想要的是什么(what),而让机器去想该怎么做(how),这就意味着底层react要做更多的东西,去让我们能在更高层面上进行编程,使我们能更加专注于业务。

⭐组件化

把一个复杂的页面拆分成多个组件,实现了解耦,提高了代码的可复用性,JSX的语法也很方便我们学习!

⭐跨平台编写

虚拟DOM的本质就是js对象,我们只需要选择合适的渲染器,就能实现write once, run everwhere!

⭐Thinking In React——那些作者的奇思妙想

React是用JavaScript构件快速响应的大型Web应用程序的首选方式之一。

React从两方面入手:

  • 等待资源加载时间

    • 一次请求太多资源? 没关系!我有React.Lazy,用哪个加载哪个!
    • 网络请求慢?没关系!虽然我们改变不了用户的网速,但我们有React.Suspense!可以给用户显示友好流畅的加载界面!
    • 资源加载失败?没关系!我们有ErrorBoundary,实现降级UI,在页面中提示用户出现错误!
  • 大部分情况下浏览器单线程执行的问题

    • JS加载阻塞浏览器渲染?React会把一个重任务拆分成多个分任务,流程如下:

      • 协调器(Reconciler)收到更新需求,将任务交给调度器(Scheduler)进行切片拆分后,按优先级调度,插在浏览器空闲帧中去处理

      • 虚拟DOM的处理完成后,调用协调器的回调函数将结果交给它,由它再进行虚拟树的对比,等这次更新的一整颗虚拟树更新完毕后,统一打包交给渲染器(Renderer)

      • 渲染器接到渲染任务后,去页面进行渲染

TinkingInReact_FibberUpdate.png

⭐优缺点

优点:

  • 快速响应:Fiber
  • 组件化:复用性强
  • 声明式编程
  • 跨平台

缺点:

  • 大型应用需要配套学习状态管理、路由工具等,学习成本较高
  • 不适合小型应用,需要用babel处理