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)
-
渲染器接到渲染任务后,去页面进行渲染
-
-
⭐优缺点
优点:
- 快速响应:Fiber
- 组件化:复用性强
- 声明式编程
- 跨平台
缺点:
- 大型应用需要配套学习状态管理、路由工具等,学习成本较高
- 不适合小型应用,需要用babel处理