这是我参与「第五届青训营 」笔记创作活动的第6天
一.React的应用场景
- 前端应用开发,如Netflix 网页版Facebook,Instagram
- 移动原生应用开发,如 Instagram,Discord,Oculus.
- 结合 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 编程痛点
- 状态更新,UI 不会自动更新,需要手动地调用DOM进行更新。
- 欠缺基本的代码层面的封装和隔离,代码层面没有组件化。
- Ul 之间的数据依赖关系,需要手动维护如果依赖链路长,则会遇到Callback Hel”
组件化
- 组件是组件的组合/原子组件
- 组件内拥有状态,外部不可见
- 父组件可将状态传入组件内部
什么是虚拟DOM?
传统的 DOM 操作是直接在 DOM 上操作的,当需要修改一系列元素中的值时,就会直接对 DOM 进行操作。而采用 Virtual DOM 则会对需要修改的 DOM 进行比较(DIFF),从而只选择需要修改的部分。也因此对于不需要大量修改 DOM 的应用来说,采用 Virtual DOM 并不会有优势。开发者就可以创建出可交互的 UI。
在React中,render执行的结果得到的并不是真正的DOM节点,结果仅仅是轻量级的JavaScript对象,我们称之为virtual DOM。
React 特点
- 声明式
- 组件化
- 跨平台编写
React的开发依赖
开发React必须依赖三个库:
react:包含react所必须的核心代码
react-dom:react渲染在不同平台所需要的核心代码
babel:将jsx转换成React代码的工具, jsx语法浏览器是不识别的