重学React,第一天

134 阅读3分钟

React is what?

讲概念

React是一个网页UI框架,通过组件化的方式解决视图层开发复用的问题,本质是一个组件化框架。

说用途

用于构建视图

理思路

核心设计思路有三:声明式、组件化、通用性

列优缺

  • 得益于声明式、组件化、通用性。

    • 速度快,性能好。兼容性强。(得益于通用性中虚拟Dom)
    • 复用用代码更容易,可维护性高。(得益于组件化思想)
  • React并没有提供完整的一揽子解决方案,在开发大型前端应用时,需要向社区寻找并解决方案,虽然有助促进社区繁荣,但开发者在技术选型与学习使用上有较高的成本。如处理单页面路由使用 Router,处理数据使用 Redux。

学习计划

graph LR;
React((React)) --> A(组件基础) & B(状态管理) & C(渲染流程) & D(性能优化) & E(Hooks) & F(生态)

知识支撑

回溯历史

  1. 互联网之初浏览器千姿百态,开发人员写网页十分麻烦

    问题诞生:浏览器兼容性是当时最大的问题

  2. 2005年:jQuery诞生,它封装了dom操作、提供样式选择器、封装ajax等大量的基础函数。

    目的:解决浏览器兼容性问题。

    本质:jQuery并没有解决就代码如何组织的问题,本质上只是工具函数合集,并不能称为框架。

    问题诞生:随着PC性能愈来愈好,代码越来复杂,前端工程量愈来愈大。

  3. 2009:AngularJS出生

    目的:有效组织代码结构,提升复用率,减少前端工程量。

    本质:从底层开始深度封装,提供了路由、双向绑定、指令、组件等框架特性,内容多到像一本百科全书。

    问题诞生:内容庞大而复杂,数不清的概念、学习成本太高。

  4. 2010:Backbone.js破局

    目的:希望有效组织代码结构,但又不想陷入AngularJS的麻烦。

    本质:只要你懂jQuery,引入了MVC的概念,提供了路由等的封装

    问题:一直以来都是从网页的维度去思考,当时常见组件复用的开发方案,是拼装模板;缺少以 UI组件为基础 的组件复用的开发方案、缺少工程化;

  5. 2013:React面世

    React is what ?

React简介

  • React的开发思维模式

    // 如果用简单的一个公式来表示
    View = fn(props,state,context) //fn函数 :也可以是无数个组件构成的
    

    React只有组件,没有页面,没有控制器,也没用模型。React只关心两件事 数据于组件

    没有页面,用组件组合生成页面。没有控制器,用组件充当控制器。就像搭建乐高玩具。

  • 核心思路

    1. 声明式

      直观与组合

      /**命令式写法**/
      // html
      <div class='block'></div>
      // js
      const block = $('.block').css('color','red');
      ​
      /**声明式写法**/
      const Block = <div style={{color:'red'}}></div>
      
    2. 组件化

      视图的拆分与模块复用,可以更容易做到高内聚低耦合。

      降低功能的耦合性,提高功能内部的聚合性;对前端工程化,代码复用有极大好处。

    3. 通用性

      通用性在于一次学习,随处编写。如React Native、React 360等。

      靠虚拟Dom来保证实现:React将Dom抽象为虚拟Dom,开发者不会直接操作Dom;使得React不再局限于web开发,能走向更宽广的平台。

      使得React的适用范围变得足够广,无论是Web、Native、VR、Shell应用等

最后一句

学习心得!若有不正,还望斧正。希望掘友们不要吝啬对我的建议。