为什么选择使用框架而不是原生?
框架的好处:
1、组件化:其中以 React 的组件化最为彻底,甚至可以到函数级别的原子组件,高度的组件化可
以是我们的工程易于维护、易于组合拓展
2、天然分层:JQuery 时代的代码大部分情况下是面条代码,耦合严重,现代框架不管是 MVC、
MVP 还是 MVVM 模式都能帮助我们进行分层,代码解耦更易于读写。
3、生态:现在主流前端框架都自带生态,不管是数据流管理架构还是 UI 库都有成熟的解决方案。
4、 开发效率:现代前端框架都默认自动更新 DOM,而非我们手动操作,解放了开发者的手动
DOM 成本,提高开发效率,从根本上解决了 UI 与状态同步问题.
虚拟 DOM 的优劣如何?
优点:
1、保证性能下限:虚拟 DOM 可以经过 diff 找出最小差异,然后批量进行 patch,这种操作虽然比
不上手动优化,但是比起粗暴的 DOM 操作性能要好很多,因此虚拟 DOM 可以保证性能下限
2、无需手动操作 DOM:虚拟 DOM 的 diff 和 patch 都是在一次更新中自动进行的,我们无需手动
操作 DOM,极大提高开发效率
3、跨平台:虚拟 DOM 本质上是 JavaScript 对象,而 DOM 与平台强相关,相比之下虚拟 DOM 可以进行
更方便地跨平台操作,例如服务器渲染、移动端开发等等缺点:
无法进行极致优化:在一些性能要求极高的应用中虚拟 DOM 无法进行针对性的极致优化,比如
VScode 采用直接手动操作 DOM 的方式进行极端的性能优化
虚拟 DOM 实现原理?
1、虚拟 DOM 本质上是 JavaScript 对象,是对真实 DOM 的抽象
2、状态变更时,记录新树和旧树的差异
3、最后把差异更新到真正的 dom 中
React 最新的生命周期是怎样的?
React 16 之后有三个生命周期被废弃(但并未删除)
1、componentWillMount
2、componentWillReceiveProps
3、componentWillUpdate
官方计划在 17 版本完全删除这三个函数,只保留 UNSAVE_前缀的三个函数,目的是为了向下兼
容,但是对于开发者而言应该尽量避免使用他们,而是使用新增的生命周期函数替代它们