美文网首页
React分享大纲

React分享大纲

作者: 深圳都这么冷 | 来源:发表于2022-12-21 09:06 被阅读0次

一. React

React is a declarative, efficient, and flexible JavaScript library for building user interfaces.

It lets you compose complex UIs from small and isolated pieces of code called “components”.

React 是一个用于构建用户界面的声明式、高效且灵活的 JavaScript 库。

它允许您从称为“组件”的小而孤立的代码片段构建复杂的 UI。

react vs Vue 流行度对比

React最大的竞争对手是Vue

react流行度 https://trends.builtwith.com/javascript/React

vue流行度 https://trends.builtwith.com/javascript/Vue

前端库流行度分布 https://trends.builtwith.com/javascript/javascript-library

二. 背景知识

www

Tim Berners-Lee2016年度图灵奖得主

    www让linux的开发模式成为可能(www@1989 linux@1991)

www开启了互联网浪潮,创造了上千万的工作机会

www的三要素:HTML+CSS+JavaScript

web2.0: AJAX是技术上的标志,XML -->JSON发扬光大

web3.0: 从我全都要,到原创支持?目前还不明朗

HTML: HTML5

  • 熟悉基本标签的语法语义和属性<h1><p><span><div><form><input><button>
  • 更多语义的标签<header><footer><section><aside><summary>
  • 必须有封闭标签,如<br />

CSS: CSS3

  • 熟悉选择器/选择器优先级/层叠样式合并
  • 熟悉一个前端组件库,如semantic-ui,bootstrap或者easyUI

JavaScript(Brendan Eich)

JavaScript与人类很像,带有明显的早产的痕迹,缺陷非常多,不过一直在进步,如今的JavaScript是一门严肃的工程语言,也是最流行的语言

  • 数组对象迭代

    • map
    • filter
    • reduce
    • find
    • forEach
  • es6

    • 导入导出

      默认导出/具名导出

    • 箭头函数

      var func = function (a, b){return a+b}

      let func = (a, b) => a+b

      let f3 = (a, b) => {a, b} // 错
      let f1 = (a, b) => {return {a, b}}
      let f2 = (a, b) => {return {a: a, b: b}}

    • 析构展开语法

      const [x, setX] = useState(0)

      const {x, y} = props

      let newCopyObj = {...oldObj}

      let newCopyArr = [...oldArr]

    • 生成器(语法和语义都来自python)

      只有写底层库的时候需要

    • Promise对象

    • fetch函数

  • 扩展语法jsx

    • 使用标签语法创建组件,如<Hello message="world" />

    • 使用花括号包含任意js表达式如

      <Select
        search
        placeholder='请选择接入交换机'
        options={accessSwitches.map(item => ({ value: item.id, text: item.verbose }))}
        name='access_switch' value={instance.access_switch} onChange={changeField} />
      
  • 函数式编程

    函数调用有上下文,就像人有人际关系一样

    系统环境

    全局上下文

    函数调用上下文

    块级别上下文

    同样的参数,返回值也相同,除了返回值,没有别的副作用,返回值只依赖参数,不以时空为转移

    函数式编程非常容易维护,也非常容易写单元测试

三. 传统前端编程

  • html结构
  • css样式
  • js事件
    三者代码分离,在html文档中导入css和js
<script src="./demo.js"></script>
<link rel="stylesheet" href="./demo.css">

缺陷

  • js直接操作DOM树,早期各厂商的DOM api互不兼容,导致代码的跨平台很痛苦,于是出现了jQuery,jQuery为了兼容所有平台,愈来越臃肿
  • 前端html和js的分离让代码碎片化变得严重。
  • 原始html属性的不受控,让值获取非常啰嗦($('#name').val())
  • 早期的这种模式,适合使用后端逻辑生成html模版代码的开发模式(前后端不分离)
  • 版本更新的时候,html对css和js的依赖让更新过程变得痛苦(浏览器缓存)
  • 后面逐渐流行前后端分离,传统的那一套已不能胜任,所以出现了react和vue

四. 工具链

  • node vs V8

    node.js后端解释器

  • 包管理工具npm

    npm是官方的包管理工具,早期版本存在一些缺陷,所以又出现yarn。

    npm逐渐吸收yarn优点,已经完全覆盖yarn的特性。

  • 编译工具babel

    将es6和jsx新语法转换为所有浏览器兼容的js传统语法

  • 项目打包webpack

    压缩打包(打包成传统模式的代码)

  • 代码管理工具git

    一般项目初始化时,代码管理工具就为用户设置好了默认配置,包括.gitignore文件

  • 还有其他一堆非核心工具,可以自主学习和采用...

  • react-scripts集成所有ALL-IN-ONE

五. react基本概念

  • 组件component「最核心的概念」

    • 类组件【已被淘汰】
      • 生命周期【已被淘汰】
    • 函数式组件【推荐使用】
      • 副作用effect【推荐使用】
  • 属性props

    两个特殊的属性key和children

  • 状态states

  • 钩子hooks

  • virtual DOM

  • 单向数据绑定

react理论上将一切都组件化,组件集中管理自己的样式状态和属性,实践中一般css还是分开,使用css类选择器定义好样式,将js和html合并为组件(jsx)

  1. React程序由组件树构成,root组件挂在文档的指定位置,其他组件都是root组件的后代
  2. 组件有自己的属性,叫做Props,是由控制它的组件传递的参数。组件名和属性就是组件的API
  3. 组件有自己的状态,叫做State,是完全由自己管理的。状态可以理解为组件的内部实现细节
  4. 一般使用react hooks管理State【函数式组件】
  5. Props只能传递数据给子组件,使用Context可以跨层级传递数据,一般结合hooks使用
  6. 流行的第三方库react-router,use-immer,react-icons

react的优点:

  1. Js和html放在一起,能够更好的管理高内聚低耦合
  2. 组件化可以更好的以设计师的思维编程
  3. 组件化也是模块化,可以提高代码重用
  4. react生态圈非常成熟且不断进取,特别适合探索性项目敏捷开发

六. 实际操作

  • 安装react

    npm install -g npx create-react-app

  • 演示创建react项目

    npx create-react-app my-app

  • 演示参与老项目

    npm i(npm install)

  • 解释组件挂载

  • 删除不必要的文件

  • 自定义一个组件

  • 演示使用第三方库组件

    npm install semantic-ui-react

    npm install semantic-ui-css

  • 演示使用state

  • 演示使用props

  • 跟着练习做完https://beta.reactjs.org/learn/thinking-in-react

  • 演示npm run build

七. 怎样算会用react

  • 1.会使用hooks管理Context

  • 2.会使用第三方库提升代码质量

  • 3.会自定义hooks

  • 4.会实现文件下载上传功能(非受控组件useRef)

  • 5.会使用react-router管理前端路由

    掌握一门技术最好的方式是用它
    

八. 推荐材料

相关文章

  • React分享大纲

    一. React React is a declarative, efficient, and flexible ...

  • React课程大纲

    概览React是什么?React是Facebook开发并开源的一个采用声明式,执行高效而且灵活的用来构建用户界面的...

  • React Native 大纲

    项目搭建 项目创建 文件 - package.json npm start/install 基本原理 模板语言 代...

  • 【PIT】React-Native(15) PanRespond

    大纲react-native-scrollable-tab-view在安卓模拟器上报错react-native-e...

  • 分享大纲

    1、厌倦的之前的生活方式,觉得人生不应该是一成不变的,要有所突破 2、结交一些网友和群聊让我很不快乐,并且遭到八卦...

  • 分享大纲

    孩子的心理营养 ㈠无条件的接纳,不管长的好不好看,爸爸妈妈都接受他为自己最好的孩子。 ㈡重...

  • 分享大纲

    主题:幸福就在一念之间 我能想到幸福的事,就是和你一起慢慢变老 流程:自我介绍(身份,学习成长经历,与观颐的缘份,...

  • 分享大纲:

    公司简介: 公司简介是什么,就是对公司,对企业的介绍。这种介绍不是一句话带过,也不是长篇大论,是简单扼要的介绍公司...

  • 分享 50 个完整的 React Native 项目

    分享 50 个完整的 React Native 项目 分享 50 个完整的 React Native 项目

  • Dubbo大纲分享

网友评论

      本文标题:React分享大纲

      本文链接:https://www.haomeiwen.com/subject/ffbuqdtx.html