React 基础

news2024/11/15 15:50:21

React 基础

1.React概述

目标:了解 React 是什么

官方文档(英文),官方文档(中文)

官方释义: A JavaScript library for building user interfaces (一个用于构建用户界面的 JavaScript 库)。
React 是一个开源的 javaScript 库 用于构建 web 应用中的视图层 就是web 应用中的前端用户界面

在这里插入图片描述

React 是目前最为流行的前端框架之一。

npm 前端三大框架下载量对比

在这里插入图片描述
谷歌搜索 前端三大框架搜索对比

在这里插入图片描述

React 是 Facebook 的软件工程师在 2012 年创建 于 2013年5月开源 目前由 facebook 以及个人开发人员和公司组成的社区维护。

React 起源于 facebook 的内部项目 因为当时该公司的市场上所有 javascript 框架都不满意 就决定自己写一套用来设计 instagram 的网站。

和其他前端框架相比 React 社区非常活跃 这就意味在构建客户端 wdb 应用的过程中你遇到的问题几乎都可以在社区中找到答案。

Stack Overflow

在这里插入图片描述

2.创建React项目

目标:掌握使用脚手架创建 React 项目的方式

# 全局安装 react 官方提供的脚手架工具 create-react-app (CRA)
npm install create-react-app@5.0.1 -g
# 使用 CRA 创建项目 项目名称为 react-basic
create-react-app react-basic
# 切换到项目根目录
cd react-basic
# 启动项目
npm start
# 创建项目的第二种方式
npm init react-app react-basic

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

# 项目结构分析
---------------------------------------------------------------------------------------------------------------
|--- README.md                 项目的说明书                                                                      
|--- package.json              npm 包说明文件 记录项目信息                                                        
|--- package-lock.json         跟踪被安装的每个软件包的确切版本                                                   
|--- public                    本地开发服务器提供的静态资源目录                                                   
|    |--- favicon.ico          网站图标、显示在浏览器的标签栏中                                                   
|    |--- index.html           项目的 HTML 模板                                                                  
|    |--- logo192.png          react logo 图片 (示例代码中用于设置 IOS 移动端网站图标)                            
|    |--- logo512.png          react logo 图片                                                                  
|    |--- manifest.json        web 应用清单如名称, 作者, 图标和描述 (主要用于将 Web 应用程序安装到设备的主屏幕)     
|    |--- robots.txt           爬虫协议文件                                                                      
|--- src                       项目源码目录                                                                       
|    |--- App.css              示例程序中的根组件样式文件                                                        
|    |--- App.js               示例程序中的根组件文件                                                           
|    |--- App.test.js          示例程序中的根组件测试文件                                                         
|    |--- index.css            示例程序中的全局样式文件                                                            
|    |--- index.js             项目的入口文件                                                                     
|    |--- logo.svg             示例程序中根组件中显示的网站图标文件                                                
|    |--- reportWebVitals.js   测试应用程序的性能                                                                 
|    |--- setupTests.js        项目的测试文件                                                                    
--------------------------------------------------------------------------------------------------------------

VSCODE扩展-ES7+ React/Redux/React-Native snippets

3.React初体验

目标: 创建 h1 标题元素、渲染该标题元素

<!-- 即将创建 h1 元素 -->
<h1 title="Hello React" id="title">Hello React</h1>
<!-- public/index.html -->
<!-- 将创建好的 h1 元素渲染到 id 为 root 的 div 中 -->
<div id="root">
	<h1 title="Hello React" id="title">Hello React</div>
</div>
// src/index.js
// React 既可以构建在浏览器中运行的 web 应用, 也可以构建在移动端运行的原生应用, React 在构建这两种应用时会有一些通用方法和一些非通用方法, 通用方法都被放置在了 react 包中,非通用方法比如实现 web 应用的方法被放置在了 react-dom 包中, 实现移动端应用的方法被放置在了 react-native-web 文件中.
// react:核心库, 包含了构建 web 应用和构建移动端应用的通用方法.
import React from "react";
// react-dom:只包含了构建 web 应用的方法.
import ReactDOM from "react-dom/client";

// React.createElement(type, props, children): React 提供的创建元素的方式
// type: 标签名称, 字符串类型.
// props: 元素属性, 对象类型, 无属性填入 null
// children: 子元素, 普通文本或 createElement 方法返回的元素对象
// return: 元素对象
const title = React.createElement(
  "h1",
  { id: "title", title: "Hello React" },
  "Hello React"
);
// 创建 React 应用的根节点
const root = ReactDOM.createRoot(document.getElementById("root"));
// 将标题渲染到该根节点中
root.render(title);

创建以下 html 结果并把其渲染出来

<div class="list">
  <h2>汽车</h2>
  <ul>
    <li>轿车</li>
    <li>越野车</li>
  </ul>
</div>
// React 项目 入口文件
import React from "react";
import ReactDOM from "react-dom/client";

// 创建 h2 标记
const title = React.createElement("h2", null, "汽车");

// 创建 ul 标记
const list = React.createElement(
  "ul",
  null,
  React.createElement("li", null, "轿车"),
  React.createElement("li", null, "越野车")
);

// 创建类名为 title 的 div 元素
const container = React.createElement(
  "div",
  { className: "list" },
  title,
  list
);

// 获取应用的元素并进行包装
const root = ReactDOM.createRoot(document.getElementById("root"));

// 通过 render 方法向根元素中渲染内容
root.render(container);

另外一种写法使用 Jsx 想使用Jsx的具体去个人首页查看

JSX

// React 项目 入口文件
import React from "react";
import ReactDOM from "react-dom/client";

// jsx 语法是 React 提供另一种创建用户界面的方式
// jsx 虽然看起来像 html 都他绝对不是 html 是一种 javaScript 语法扩展
// 为什么 facebook 要创建 jsx 语法呐
// 因为要解决一个矛盾 react 出性能考虑 必须要通过 react.createElement 创建元素
// 都是开发者通过该方法创建元素太麻烦了
// jsx 语法会在应用构建的过程中 baber 转换成 react.createElement 方法调用
const jsx = (
  <div className="list">
    <h2>1111</h2>
    <ul>
      <li>2222</li>
      <li>3333</li>
    </ul>
  </div>
);

// 获取应用的元素并进行包装
const root = ReactDOM.createRoot(document.getElementById("root"));

// 通过 render 方法向根元素中渲染内容
root.render(jsx);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/23247.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

FT2000+ arm64服务器 kylin server 虚拟机 编译fuse_dfs 解决挂载目录中的故障

服务器搭建 FT2000 arm64服务器 openEuler 部署hadoop单机伪集群并测试基准性能_hkNaruto的博客-CSDN博客 编译fuse相关程序 下载源码 wget https://dlcdn.apache.org/hadoop/common/hadoop-3.3.1/hadoop-3.3.1-src.tar.gz tar -xvf hadoop-3.3.1-src.tar.gz 安装工具、编…

干货!一文搞定无头浏览器的概念以及在selenium中的应用

无头浏览器 无头浏览器&#xff0c;即 Headless Browser&#xff0c;是一种没有界面的浏览器。它拥有完整的浏览器内核&#xff0c;包括 JavaScript 解析引擎、渲染引擎等。与普通浏览器最大的不同是&#xff0c;无头浏览器执行过程中看不到运行的界面&#xff0c;但是我们依然…

目标检测算法——工业缺陷数据集汇总2(附下载链接)

>>>深度学习Tricks&#xff0c;第一时间送达<<< &#x1f680;近期&#xff0c;小海带在空闲之余&#xff0c;收集整理了一批工业缺陷开源数据集供大家参考。 整理不易&#xff0c;小伙伴们记得一键三连喔&#xff01;&#xff01;&#xff01;&#x1f91e…

论微软过程

&#x1f430;作者简介&#xff1a;一位普通高校的在校学生&#xff0c;致力于提高自己的编程能力。 &#x1f34c;个人主页&#xff1a;比昨天强一點的博客_CSDN博客-C语言从0到精通领域博主 &#x1f34d;系列专栏&#xff1a;C语言从0到精通_比昨天强一點的博客-CSDN博客 &a…

Hadoop环境搭建-单机、伪分布式、完全分布式

目录 一、单机安装 二、伪分布式环境搭建 配置SSH免密登录 三、完全分布式环境搭建 设置免密 修改配置文件 本文的所有配置文件&#xff0c;除注释部分都可直接复制粘贴。因为本文的配置文件的语言语法采用的是HTML或JAVA&#xff0c;注释部分可能和linux系统上的不同&#xff…

Arcgis建筑面shp由DSM和DEM获取高度

效果 1、准备数据 DEM、DSM数据精度尽量高一些 1)DEM 2)DSM 3)建筑shp 所有数据坐标统一,而且加载后位置能对上 2、准备数据前的一些操作 1)矢量shp裁剪 2)栅格tif裁剪

【iOS】—— URL Scheme

URL Scheme URL Scheme是一个非常炫酷的东西&#xff0c;用法很简单,在我们平时使用app的时候&#xff0c;经常一不小心就点入广告&#xff0c;打开了其他的app或者打开了浏览器的某个网站&#xff0c;这个东西就用到了URL Scheme。 用法非常非常简单&#xff0c;最重要的只有…

3D 三角形的顶点顺序

在三维空间&#xff0c;一个表面是有正反之分的。WPF只会渲染正面&#xff0c;反面不渲染。 一个三角形有三个顶点&#xff0c;这三个顶点有一个排列顺序。 如下图画一个三角形&#xff0c; 定义顶点坐标&#xff0c;<MeshGeometry3D Positions"-1,0,0 0,-1,0 0,0,-1&…

抗CD4单抗偶联表阿霉素/单克隆抗体Zh805/特异性靶向肽A54偶联阿霉素的制备

小编给大家整理了抗CD4单抗偶联表阿霉素/单克隆抗体Zh805/特异性靶向肽A54偶联阿霉素的制备&#xff0c;一起来看看吧&#xff01; 抗CD4单抗偶联表阿霉素制备方法&#xff1a; 采用低分子右旋糖苷(DextranTl0)作联接桥,将表阿霉素分子偶联到抗CD4单抗上,制备成抗CD4单抗免疫结…

数字信号处理-2-三角函数与谱

1 弧度的定义 为了便于数学上的运算&#xff0c;设以半径为 1 的圆的中心为原点&#xff0c;x 轴正方向为基准测量角度。这样的圆为单位圆&#xff0c;此单位圆的长度为 1&#xff0c;在圆周上取与半径相同长度的圆弧&#xff0c;对应的角度为 1 弧度。 在三角函数中弧度能大大…

TPS63020DSJR(LDO)NCP51200MNTXG IC REG 稳压器参数

1、TPS63020电源管理IC是业界最小和性能最高的buck-boost转换器&#xff0c;具有4-A开关和高达96%的效率。TI TPS63020电源管理IC有助于延长智能手机&#xff0c;便携式医疗设备&#xff0c;DLPpico投影仪和其他电池供电多媒体设备的电池寿命。TI TPS63020 buck-boost转换器工作…

一次请求的来龙去脉 - Tomcat架构解析(二)

> 容器&#xff0c;简单理解就是用来装东西的工具。在Tomcat里面&#xff0c;容器被设计用来装载Servlet&#xff0c; 也就是我们平常写的普通的Servlet &#xff0c;就会存放在容器里面。这也就是咱们平常念叨的Servlet容器&#xff0c;其实从广义上理解&#xff0c;Servle…

JSON.stringify() 、JSON. parse()方法详解

JSON.stringify() 用法&#xff1a;JSON.stringify(value, [replacer], [space]) 第一个参数&#xff1a; value: 必选&#xff0c;将要序列后成 JSON 字符串的值。 第二个参数&#xff1a; replacer: 可选 如果是一个函数&#xff0c;则在序列化过程中&#xff0c;属性进行转…

机器学习之K-Means聚类(python手写实现+使用Silhouette Coefficient来选取最优k值)

文章目录K-MeansSilhouette Coefficient&#xff08;轮廓系数&#xff09;代码实现参考K-Means K-Means聚类又叫K均值聚类&#xff0c;是一种线性时间复杂度的聚类方法&#xff0c;也是比较成熟的一种聚类算法。 具体计算步骤如上。 Silhouette Coefficient&#xff08;轮廓…

以前编写好能够正常运行的 SAP UI5 代码,几个月后忽然不能运行了该怎么办?

以笔者本套教材为例&#xff0c;每一步骤的源代码都托管在本人 Github 仓库里&#xff0c;每次上传之前&#xff0c;都确保本地测试通过。 但笔者编写过程中发现&#xff0c;之前测试通过的代码&#xff0c;可能几个月之后再执行&#xff0c;就会遇到白屏现象&#xff0c;即应…

ffplay数据读取线程

从这张图开始&#xff0c;主要介绍ffplay的读取线程部分。 从图中可以看出&#xff0c;解码线程的主要工作内容是将资源包从待解码列队中取出&#xff0c;然后送进解码器&#xff0c;最后将解码出的数据帧放入帧队列中&#xff0c;等待SDL获取播放。 【学习地址】&#xff1a;F…

【开源电路】ST-LINK/V2、ST-LINK/V2-1、DAP-LINK烧录器(已验证)

【开源电路】ST-LINK/V2、ST-LINK/V2-1、DAP-LINK烧录器&#xff08;已验证&#xff09;PCBA实物图 最终的的PCB 3D效果图 效果图和PCBA实物图差异说明 由于设计之初只考虑当ST-LINK V2来用&#xff0c;主要是用来给STM8和stm32烧录程序。没有考虑到会将固件升级到ST-LINK…

可变电阻元件封装

实验目的 掌握原理图封装的绘制操作掌握原理图封装和PCB封装的联系掌握PCB封装的绘制探索逻辑元件的选择 实验原理 采用EDA软件进行电路原理图设计 实验仪器 电脑、Altium Designer软件、相关元器件 实验内容 制作可变电阻元件 1. 创建工作环境2. 管理元件库在左侧面板中打开…

2023年,pmp还值得去考试吗?

为什么不值得呢&#xff1f;PMP的中文翻译过来就是项目管理专业人士&#xff0c;专业人士才考的证难道会差吗&#xff1f;有了它&#xff0c;即使是项目管理小白也能变成PMP专业人士&#xff01; 张嘴就冒那种别人听了就一脸懵但依然觉得你牛逼坏了的专业术语&#xff08;笑&a…

站稳前沿消费趋势,IU酒店持续领跑轻中端品牌

站稳前沿消费趋势&#xff0c;IU凸显品牌影响魅力 在疫情点状散发的背景下&#xff0c;身处一线的酒店行业深受影响&#xff0c;在现今错综复杂的市场环境中&#xff0c;投资者如何谋求机遇?酒店业为何破局重生?另一方面&#xff0c;随着消费升级以及年轻一代消费群体的崛起…