React从基础入门到高级实战:React 基础入门 - 简介与开发环境搭建
React 简介与开发环境搭建
引言
React 是一个强大的 JavaScript 库,用于构建用户界面(UI),尤其是在单页应用(SPA)开发中表现出色。它由 Facebook(现为 Meta)开发并于 2013 年开源,因其简单、高效和灵活的特点,迅速成为前端开发的热门选择。无论你是零基础的小白,还是希望提升技能的开发者,学习 React 都将为你的技术栈增添亮点。
在本篇教程中,我们将从 React 的基本概念入手,带你了解它是什么、为什么选择它,并一步步指导你搭建开发环境,创建并运行你的第一个 React 项目。文章将用通俗的语言和生动的例子,帮你轻松迈出 React 学习的第一步。
1. React 简介
1.1 什么是 React?
React 是一个专注于构建用户界面的 JavaScript 库。它的核心思想是将界面拆分为多个组件,每个组件都可以独立管理自己的逻辑和状态。与传统的命令式编程不同,React 使用声明式编程,开发者只需描述界面在不同状态下应该是什么样子,React 会自动完成 DOM 更新。
通俗比喻:
想象你在点外卖。传统编程就像你亲自下厨,切菜、炒菜、摆盘,每一步都要自己操作。而 React 就像你告诉外卖员“我想要一份炒饭”,然后外卖员(React)自动帮你搞定一切,你只管享受结果。
1.2 React 的核心理念
React 的设计围绕以下几个关键理念:
- 声明式编程:描述 UI 的目标状态,React 负责实现。
- 组件化开发:将 UI 拆分为可复用的模块,简化开发和维护。
- 单向数据流:数据从父组件流向子组件,逻辑清晰,易于调试。
这些特性让 React 在开发复杂应用时更具优势,代码也更容易理解和扩展。
1.3 为什么选择 React?
- 高效:React 使用虚拟 DOM(Virtual DOM),只更新需要变化的部分,性能优越。
- 灵活:可以与其他工具(如 Redux、React Router)无缝集成,适应各种项目需求。
- 生态丰富:拥有庞大的社区和丰富的第三方库,学习资源充足。
- 跨平台:通过 React Native,你可以用 React 开发移动应用,实现代码复用。
2025 年趋势:
随着 React 19 的推出,React 在性能优化(如并发渲染)和开发体验(Server Components)上更进一步,成为前端开发的标杆技术。
2. 开发环境搭建
在开始写 React 代码前,我们需要搭建开发环境。2025 年的前端开发中,Vite 是主流构建工具,因其快速的启动和热更新功能,深受开发者喜爱。
2.1 安装 Node.js 和 npm
React 项目依赖 Node.js 运行时环境,npm 是它的包管理工具。
- 下载 Node.js:访问 Node.js 官网,下载最新 LTS 版本(推荐 20.x.x)。
- 安装:根据系统(Windows、macOS 或 Linux)完成安装。
- 验证:打开终端,输入以下命令:
如果显示版本号(如node -v npm -v
v20.10.0
和v10.2.0
),说明安装成功。
注意:macOS 用户可通过 Homebrew 安装(brew install node
),Linux 用户可使用包管理器(如 sudo apt install nodejs npm
)。
2.2 使用 Vite 创建 React 项目
Vite 是一个轻量、快速的构建工具,非常适合 React 开发。
-
创建项目:在终端运行:
npm create vite@latest my-react-app -- --template react
这将生成一个名为
my-react-app
的 React 项目。 -
进入项目目录:
cd my-react-app
-
安装依赖:
npm install
2.3 运行项目
- 启动开发服务器:
Vite 会在npm run dev
http://localhost:5173
启动项目,浏览器会自动打开,显示 React 欢迎页面。
小贴士:Vite 的热更新功能让代码修改后页面实时刷新,开发体验极佳。
3. 项目结构解析
Vite 创建的 React 项目结构简洁,以下是主要文件和目录的说明:
my-react-app/
├── node_modules/ # 项目依赖
├── public/ # 静态资源
│ └── vite.svg
├── src/ # 源代码
│ ├── App.jsx # 主组件
│ ├── main.jsx # 入口文件
│ ├── index.css # 全局样式
│ └── assets/ # 图片等资源
├── .gitignore # Git 忽略文件
├── index.html # HTML 模板
├── package.json # 项目配置和依赖
└── vite.config.js # Vite 配置文件
3.1 关键文件解析
-
src/main.jsx
:项目入口,负责将 React 应用挂载到 DOM。import React from 'react'; import ReactDOM from 'react-dom/client'; import App from './App.jsx'; import './index.css';ReactDOM.createRoot(document.getElementById('root')).render(<React.StrictMode><App /></React.StrictMode> );
createRoot
:创建 React 根节点。<App />
:渲染主组件。
-
src/App.jsx
:默认的主组件,显示欢迎页面。import { useState } from 'react'; import reactLogo from './assets/react.svg'; import viteLogo from '/vite.svg'; import './App.css';function App() {const [count, setCount] = useState(0);return (<div className="App"><div><a href="https://vitejs.dev" target="_blank"><img src={viteLogo} className="logo" alt="Vite logo" /></a><a href="https://react.dev" target="_blank"><img src={reactLogo} className="logo react" alt="React logo" /></a></div><h1>Vite + React</h1><div className="card"><button onClick={() => setCount((count) => count + 1)}>count is {count}</button><p>Edit <code>src/App.jsx</code> and save to test HMR</p></div><p className="read-the-docs">Click on the Vite and React logos to learn more</p></div>); }export default App;
useState
:管理组件状态。- JSX:描述 UI 的语法。
-
index.html
:HTML 模板,包含 React 挂载点<div id="root"></div>
。
图解项目结构:
+-- src/
| +-- main.jsx (入口)
| +-- App.jsx (主组件)
| +-- assets/ (资源)
+-- public/ (静态资源)
+-- index.html (模板)
+-- vite.config.js (配置)
4. 运行并修改项目
4.1 运行项目
在终端运行 npm run dev
,浏览器会打开 http://localhost:5173
,显示欢迎页面。点击计数器按钮,观察数字变化,体验 React 的交互性。
4.2 修改 App 组件
打开 src/App.jsx
,将 <h1>Vite + React</h1>
修改为:
<h1>我的第一个 React 应用</h1>
保存文件,页面会自动刷新,显示新标题。
小贴士:Vite 的热更新让开发更高效,改动后无需手动刷新。
5. 小练习
动手实践是学习的关键!试试以下练习:
- 在
src
下创建components
文件夹,新建Welcome.jsx
:export default function Welcome() {return <p>欢迎来到 React 世界!</p>; }
- 修改
src/App.jsx
,引入并使用Welcome
组件:import Welcome from './components/Welcome';function App() {return (<div className="App"><h1>我的第一个 React 应用</h1><Welcome /></div>); }export default App;
- 运行项目,确认
<p>欢迎来到 React 世界!</p>
显示在页面上。
6. 总结与预告
本篇教程介绍了 React 的基本概念、核心理念和优势,并指导你搭建了开发环境,创建并运行了第一个 React 项目。通过修改代码和完成小练习,你已经初步掌握了 React 的基础。
下一篇文章将深入探讨 JSX 与组件基础,带你了解 React 的核心语法和组件化开发模式。敬请期待!
小贴士:
- 安装 React Developer Tools 浏览器扩展,方便调试。
- 保持 Node.js 和 npm 版本更新,获得最佳体验。
希望这篇文章为你开启了 React 学习之旅!有任何疑问,欢迎留言交流,一起进步!
相关文章:
React从基础入门到高级实战:React 基础入门 - 简介与开发环境搭建
React 简介与开发环境搭建 引言 React 是一个强大的 JavaScript 库,用于构建用户界面(UI),尤其是在单页应用(SPA)开发中表现出色。它由 Facebook(现为 Meta)开发并于 2013 年开源&…...

LM-BFF——语言模型微调新范式
gpt3(GPT3——少样本示例推动下的通用语言模型雏形)结合提示词和少样本示例后,展示出了强大性能。但大语言模型的训练门槛太高,普通研究人员无力,LM-BFF(Making Pre-trained Language Models Better Few-shot Learners)的作者受gp…...

NVMe高速传输之摆脱XDMA设计2
NVMe IP放弃XDMA原因 选用XDMA做NVMe IP的关键传输模块,可以加速IP的设计,但是XDMA对于开发者来说,还是不方便,原因是它就象一个黑匣子,调试也非一番周折,尤其是后面PCIe4.0升级。 因此决定直接采用PCIe设…...
github开源版pymol安装(ubuntu22.04实战版)
1. 克隆 PyMOL 的 GitHub 仓库 首先,你需要从 GitHub 克隆 PyMOL 的源代码: git clone https://github.com/schrodinger/pymol-open-source.git cd pymol-open-source2. 安装依赖项 PyMOL 依赖一些系统库和 Python 包,确保先安装它们&…...

pycharm无需科学上网工具下载插件的解决方案
以下是两种无需科学上网即可下载 PyCharm 插件的解决思路: 方法 1:设置 PyCharm 代理 打开 PyCharm选择菜单:File → Settings → Appearance & Behavior → System Settings → HTTP Proxy在代理设置中进行如下配置: 代理地…...

Halcon计算点到平面的距离没有那么简单
Halcon计算点到平面距离 1. 一些基本概念2. 浅谈有无符号的距离2.1 无符号距离的用武之地2.2 有符号距离的必要性 3. 无符号距离怎么算3.1 创建一个无限延展的基准平面,对距离有什么影响?Halcon代码图示 3.2 创建一个小小小的基准平面,对距离…...
基于DenseNet的医学影像辅助诊断系统开发教程
本文源码地址: https://download.csdn.net/download/shangjg03/90873921 1. 简介 本教程将使用DenseNet开发一个完整的医学影像辅助诊断系统,专注于胸部X光片的肺炎检测。我们将从环境搭建开始,逐步介绍数据处理、模型构建、训练、评估以及最终的系统部署。 2. 环境准备<…...

数据中台如何设计?中台开发技术方案,数据治理方案,大数据建设方案合集
中台的价值与核心理念 中台的核心在于“企业级能力复用”,其价值体现在四大维度: 能力整合:将分散的数字化能力(如营销、供应链)集中管理,形成核心竞争力; 业务创新:通过跨领域融合…...
Python爬虫设置IP代理
设置代理(Proxy) 作用: 当网站检测到某个IP的访问频率过高时,可能会封禁该IP。通过使用代理服务器,可以定期更换IP地址,避免被识别和封锁。 优势: 让网站无法追踪真实请求来源,提升…...

Adminer 连接mssql sqlserver
第一步 docker-compose.yml adminer部分: version: 3.8 services: adminer: image: adminer:latest container_name: adminer restart: unless-stopped volumes: - ./freetds/freetds.conf:/etc/freetds.conf:rw # 确保 :rw 可读写 co…...

C++系统IO
C系统IO 头文件的使用 1.使用系统IO必须包含相应的头文件,通常使用#include预处理指令。 2.头文件中包含了若干变量的声明,用于实现系统IO。 3.头文件的引用方式有双引号和尖括号两种,区别在于查找路径的不同。 4.C标准库提供的头文件通常没…...
利用 Python 爬虫获取唯品会 VIP 商品详情:实战指南
在当今电商竞争激烈的环境中,VIP 商品往往是商家的核心竞争力所在。这些商品不仅代表着品牌的高端形象,更是吸引高价值客户的关键。因此,获取 VIP 商品的详细信息对于市场分析、竞品研究以及优化自身产品策略至关重要。Python 作为一种强大的…...

DELL EMC PowerStore BBU更换手册
写在前面 上周给客户卖了一个BBU电池,客户要写一个更换方案。顺利完成了更换,下面就把这个更换方案给大家share出来,以后客户要写,您就Ctrlc 和Ctrlv就可以了。 下面的步骤是最理想的方式,中间没有任何的问题ÿ…...

css五边形
五边形 .fu{width: 172rpx;height: 204rpx;overflow: hidden;border-radius: 10rpx;clip-path: polygon(0% 0%, 100% 0%, 100% 75%, 50% 100%, 0% 75%, 0% 25%); }六边形 clip-path: polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25%);...

三种常见脉冲神经网络编码方式解读
速率编码(rate coding) 速率编码使用输入特征来确定尖峰频率,例如将静态输入数据(如 MNIST 图像)转换为时间上的脉冲(spike)序列。它是将神经元发放脉冲的频率与输入值(如像素强度)…...
Go语言实战:使用 excelize 实现多层复杂Excel表头导出教程
Go 实现支持多层复杂表头的 Excel 导出工具 目录 项目介绍依赖说明核心结构设计如何支持多层表头完整使用示例总结与扩展 项目介绍 在实际业务系统中,Excel 文件导出是一项常见功能,尤其是报表类需求中常见的复杂多级表头,常规表格组件往…...

STM32F103 HAL多实例通用USART驱动 - 高效DMA+RingBuffer方案,量产级工程模板
导言 《STM32F103_LL库寄存器学习笔记12.2 - 串口DMA高效收发实战2:进一步提高串口接收的效率》前阵子完成的LL库与寄存器版本的代码,有一个明显的缺点是不支持多实例化。最近,计划基于HAL库系统地梳理一遍bootloader程序开发。在bootloader程…...

HTML回顾
html全称:HyperText Markup Language(超文本标记语言) 注重标签语义,而不是默认效果 规则 块级元素包括: marquee、div等 行内元素包括: span、input等 规则1:块级元素中能写:行内元素、块级元素&…...

机器视觉6-halcon高级教程
机器视觉6-halcon高级教程 双目立体视觉原理视差外极线几何双目标定 双目立体视觉之Halcon标定一.标定结果二.Halcon标定过程1.获取左右相机图像中标定板的区域;2.提取左右相机图像中标定板的MARK点坐标和摄像机外部参数;3.执行双目标定;4.获取非标准外极线几何到标…...

YOLOv8 的双 Backbone 架构:解锁目标检测新性能
一、开篇:为何踏上双 Backbone 探索之路 在目标检测的领域中,YOLOv8 凭借其高效与精准脱颖而出,成为众多开发者和研究者的得力工具。然而,传统的单 Backbone 架构,尽管已经在诸多场景中表现出色,但仍存在一…...

1.4 TypeScript 编译是如何工作的?
TypeScript 是 JavaScript 的超集,最显著的优势是引入了静态类型检查。它能帮助开发者在编写代码阶段捕获错误,从而提升代码的健壮性和可维护性。虽然 TypeScript 本身不能直接在浏览器或 Node.js 中运行,但它可以被编译成标准的 JavaScript&…...
【HTML-4】HTML段落标签:构建内容结构的基础
在网页开发中,段落标签<p>是最基础也是最重要的HTML元素之一。这篇博客将深入探讨段落标签的用法、最佳实践以及相关技术细节。 1. 段落标签的基本用法 HTML段落标签用于定义文本段落,浏览器会自动在段落前后添加一定的空白(margin&a…...
国际前沿知识系列五:时间序列建模方法在头部撞击运动学测量数据降噪中的应用
目录 国际前沿知识系列五:时间序列建模方法在头部撞击运动学测量数据降噪中的应用 一、引言 二、时间序列建模方法 (一)ARIMA 模型 (二)指数平滑法 (三)小波变换 三、实际案例分析 &…...
未授权访问漏洞利用链实战总结
一、渗透测试核心思路 攻击链路径: 未授权访问 → 接口信息泄露 → 敏感数据获取 → 账户爆破 → 权限提升 → 系统控制 二、关键步骤拆解与分析 信息收集阶段 初始突破口: 系统登录页看似无效,但通过JS文件分析发现隐藏接口(如 …...
Centos上搭建 OpenResty
一、OpenResty简介 OpenResty 是基于 Nginx 的扩展平台,完全兼容 Nginx 的核心功能(如 HTTP 服务和反向代理),同时通过内嵌 LuaJIT 支持,允许开发者用 Lua 脚本灵活扩展业务逻辑。它简化了动态逻辑的实现。 二、安装…...

Web 服务、 Nfs 服务器以及 Dns 服务器综合实验
要求: 1.web 服务的资源文件通过 nfs 服务器共享 www.luntan.com 2.确保所有主机时间同步 3.定义本地 dns 服务器解析 web 主机域名 实验: 主机服务程序192.168.96.142dns、nfs192.168.96.132web 服务器说明: 设备 IP服务端 192…...
保证数据库 + redis在读写分离场景中事务的一致性
在 Spring Boot 中实现数据库与 Redis 的一致性,特别是处理读写分离时,确保数据修改的事务一致性是一个常见的挑战。因为 Redis 是一个内存数据库,通常用于缓存,而关系型数据库是持久化存储,两者之间的数据同步和一致性…...

汇编语言的子程序魔法:解锁四则运算的奥秘
在嵌入式系统的世界里,汇编语言就像是魔法师手中的魔杖,能够直接操控硬件,实现各种神奇的功能。今天,我将带你走进一场充满乐趣的实验:如何用汇编语言实现四则运算,并将它们封装成子程序。这不仅是一次技术…...

快速解决Linux 中yum镜像拉取失败问题
在linux中使用yum命令拉取镜像的时候,如果出现如下类似报错: 我这里是安装Erlang环境也是同样报错: 其实就是网络环境的问题,更换为国内的镜像源就行了,可以选择cmd的ssh连接方式(命令:ssh root192.168.xxx…...
C#核心概念解析:析构函数、readonly与this关键字
🔍 析构函数:资源清理的最后防线 核心作用 析构函数(~ClassName)在对象销毁前执行,专用于释放非托管资源(如文件句柄、非托管内存)。托管资源(如.NET对象)由GC自动回收…...