这是我参与11月更文挑战的第1天,活动详情查看:2021最后一次更文挑战
React作为一个非常优秀的JS库,使用者和拥护者非常多,在我们使用了那么久的React之后,可以尝试思考一下React是什么?或者思考一下你对于React的理解是怎样的?
React是一个用于构建用户界面的JS库。核心是专注于视图,一次学习,跨平台编写,主要体现在声明式、组件化和通用性。目的实现组件化开发,本质是一个组件化框架,具有非常活跃且完善的社区
前端的发展从最原始的刀耕火种时代开始发展至今,中间经历过jQuery统治的时代,后续又经历了Angular、Backbone时代,一直到如今的Vue和React双双统治国内的前端开发
在前端原始阶段,浏览器的交互和展示并没有如今这么丰富,那个时候前端使用原始的HTML、JS、CSS便可以很很轻松的完成开发任务,随着时代的脚步不断进步,这种开发模式已经不能满足开发需求,这个时候需要频繁的操作DOM和各种浏览器的兼容处理,往往一件事情需要大量的代码实现,且需要进行兼容性处理,这个时候JQ的出现解放了DOM的频繁操作和浏览器兼容性处理,并提供了大量的基础函数
在JQ时代并不能很好解决前端工程化的问题:如何组织代码、如何快捷启动项目、如何提高代码复用性等,Angular出现了,其体功能了丰富的功能,覆盖了整个前端开发的很多方面:不仅MVC 概念的引入,还提供了数据绑定、前端路由、表单校验等功能,甚至设计模式都有,犹如一架功能齐全的坦克
到了React时代,其提供了一个更新颖的开发理念,参考下面这个非常精简公式
UI = fn(data)
这个时候开发者不需要关心太多,关注点可以聚焦在data,React可以根据数据生成对应的视图,且只要数据不变就保证生成的视图保持一致
声明式
使用声明式编程,代码会比较直观、便于阅读
const Hello = (props) => <div style={{ color: 'green' }}>Hello React</div>
组件化
构建管理自身状态的封装组件,然后对其组合以构成复杂的 UI。
由于组件逻辑使用 JavaScript 编写而非模板,因此你可以轻松地在应用中传递数据,并保持状态与 DOM 分离。
组件化可以降低系统间功能的耦合性,提高功能内部的聚合性
通用性
由于VDOM的存在,React不仅仅支持浏览器端,更可以在Native、VR 、Shell 和小程序端运行