React的历史与应用 | 青训营笔记

200 阅读2分钟

这是我参与「第五届青训营 」笔记创作活动的第6天

一.React的应用场景

  1. 前端应用开发,如Netflix 网页版Facebook,Instagram
  2. 移动原生应用开发,如 Instagram,Discord,Oculus.
  3. 结合 Electron,进行桌面应用开发

二.React的发展历史

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

React 的设计思路

UI 编程痛点

  1. 状态更新,UI 不会自动更新,需要手动地调用DOM进行更新。
  2. 欠缺基本的代码层面的封装和隔离,代码层面没有组件化。
  3. Ul 之间的数据依赖关系,需要手动维护如果依赖链路长,则会遇到Callback Hel”

组件化

  1. 组件是组件的组合/原子组件
  2. 组件内拥有状态,外部不可见
  3. 父组件可将状态传入组件内部

什么是虚拟DOM?

传统的 DOM 操作是直接在 DOM 上操作的,当需要修改一系列元素中的值时,就会直接对 DOM 进行操作。而采用 Virtual DOM 则会对需要修改的 DOM 进行比较(DIFF),从而只选择需要修改的部分。也因此对于不需要大量修改 DOM 的应用来说,采用 Virtual DOM 并不会有优势。开发者就可以创建出可交互的 UI。

在React中,render执行的结果得到的并不是真正的DOM节点,结果仅仅是轻量级的JavaScript对象,我们称之为virtual DOM。

React 特点

  1. 声明式
  2. 组件化
  3. 跨平台编写

React的开发依赖

开发React必须依赖三个库:

react:包含react所必须的核心代码

react-dom:react渲染在不同平台所需要的核心代码

babel:将jsx转换成React代码的工具, jsx语法浏览器是不识别的