响应式系统与React| 青训营笔记

77 阅读3分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第7天,下面跟我一起看看青训营React部分讲了什么吧~

一. React的历史

  • 2010年 Facebook 在其 php 生态中,引入了 xhp 框架,首次引入了组合式组件的思想,启发了后来的 React 的设计。
  • 2011年 Jordan Walke 创造了 FaxJS ,也就是后来的 React 原型。
  • 2012年 在 Facebook 收购 Instagram 后,该 FaxJS 项目在内部得到使用,Jordan Walked 基于 FaxJS 的经验,创造了React。
  • 2013年 React 正式开源,在2013 JSConf 上 Jordan Walke 介绍了这款全新的框架
  • 2014-今天 生态大爆发,各种围绕 React 的新工具/新框架开始涌现

二.React的设计思路

1.UI编程痛点:

1)状态更新,UI不会更新,需要手动调用DOM进行更新

2)欠缺基本的代码层面的封装和隔离,代码层面没有组件化

3)UI之间的数据依赖关系,需要手动维护,如果依赖链路长,则会遇到“Callback Hell”

  1. React的应对措施——响应式编程

1)状态更新,UI自动更新

2)前端代码组件化,可复用,可封装

3)状态之间的互相依赖关系只需声明即可

三.组件化与组件设计

  1. 组件是组件的组合/原子组件
  2. 组件内拥有状态,外部不可见
  3. 父组件可将状态传入组件内部
  4. 组件内部有私有状态 State
  5. 组件接受外部的 Props 状态提供复用性
  6. 根据当前的 State/Props,返回一个 UI
  7. 组件声明了状态和 UI 的映射
  8. 组件有 Props/State 两种状态
  9. “组件”可由其他组件拼装而成

四.React实现遇到的问题

  • JSX 不符合 JS 标准
  • 返回的JSX发生改变时,如何更新 DOM

解决方案:使用Virtual DOM:一种用于和真实DOM同步,而在JS内存中维护的一个对象,它具有和DOM类似的树状结构,并和DOM可以建立一一对应的关系。其赋予React声明式的API

  • State/Props 更新时,要重新触发 render 函数

五.How to differ?

  • 不同类型的元素:替换
  • 同类型的DOM元素:更新
  • 同类型的组件元素:递归

六.React状态管理库

  1. 核心思想:将状态抽离到UI外部进行统一管理
  2. 常见状态管理库:redux;xstate;mobx;recoil

七.常见应用型框架

  • NEXT.JS

硅谷明星公司 Vercel 的 React 开发框架,稳定,开发体验好,支持 Unbundled Dev,SWC 等,其同样有Serverless 一键部署平台帮助开发者快速完成部署。

  • MODERN.JS 现代 Web 工程体系

字节跳动 Web Infra 团队研发的全栈开发框架,内置了很多开箱即用的能力与最佳实践,可以减少很多调研选择工具的时间。

  • Blitz

无 API 思想的全栈开发框架,开发过程中无需写 API 调用与 CRUD 逻辑,适合前后端紧密结合的小团队项目。