React is what?
讲概念:
React是一个网页UI框架,通过组件化的方式解决视图层开发复用的问题,本质是一个组件化框架。
说用途:
用于构建视图
理思路:
核心设计思路有三:声明式、组件化、通用性
列优缺:
-
优
得益于声明式、组件化、通用性。
- 速度快,性能好。兼容性强。(得益于通用性中虚拟Dom)
- 复用用代码更容易,可维护性高。(得益于组件化思想)
-
缺
React并没有提供完整的一揽子解决方案,在开发大型前端应用时,需要向社区寻找并解决方案,虽然有助促进社区繁荣,但开发者在技术选型与学习使用上有较高的成本。如处理单页面路由使用 Router,处理数据使用 Redux。
学习计划
graph LR;
React((React)) --> A(组件基础) & B(状态管理) & C(渲染流程) & D(性能优化) & E(Hooks) & F(生态)
知识支撑
回溯历史
-
互联网之初浏览器千姿百态,开发人员写网页十分麻烦
问题诞生:浏览器兼容性是当时最大的问题
-
2005年:jQuery诞生,它封装了dom操作、提供样式选择器、封装ajax等大量的基础函数。
目的:解决浏览器兼容性问题。
本质:jQuery并没有解决就代码如何组织的问题,本质上只是工具函数合集,并不能称为框架。
问题诞生:随着PC性能愈来愈好,代码越来复杂,前端工程量愈来愈大。
-
2009:AngularJS出生
目的:有效组织代码结构,提升复用率,减少前端工程量。
本质:从底层开始深度封装,提供了路由、双向绑定、指令、组件等框架特性,内容多到像一本百科全书。
问题诞生:内容庞大而复杂,数不清的概念、学习成本太高。
-
2010:Backbone.js破局
目的:希望有效组织代码结构,但又不想陷入AngularJS的麻烦。
本质:只要你懂jQuery,引入了MVC的概念,提供了路由等的封装
问题:一直以来都是从网页的维度去思考,当时常见组件复用的开发方案,是拼装模板;缺少以 UI组件为基础 的组件复用的开发方案、缺少工程化;
-
2013:React面世
React简介
-
React的开发思维模式
// 如果用简单的一个公式来表示 View = fn(props,state,context) //fn函数 :也可以是无数个组件构成的React只有组件,没有页面,没有控制器,也没用模型。React只关心两件事 数据于组件
没有页面,用组件组合生成页面。没有控制器,用组件充当控制器。就像搭建乐高玩具。
-
核心思路
-
声明式
直观与组合
/**命令式写法**/ // html <div class='block'></div> // js const block = $('.block').css('color','red'); /**声明式写法**/ const Block = <div style={{color:'red'}}></div> -
组件化
视图的拆分与模块复用,可以更容易做到高内聚低耦合。
降低功能的耦合性,提高功能内部的聚合性;对前端工程化,代码复用有极大好处。
-
通用性
通用性在于一次学习,随处编写。如React Native、React 360等。
靠虚拟Dom来保证实现:React将Dom抽象为虚拟Dom,开发者不会直接操作Dom;使得React不再局限于web开发,能走向更宽广的平台。
使得React的适用范围变得足够广,无论是Web、Native、VR、Shell应用等
-
最后一句
学习心得!若有不正,还望斧正。希望掘友们不要吝啬对我的建议。