React从基础入门到高级实战:React 基础入门 - 简介与开发环境搭建

news2025/5/25 20:14:22

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.0v10.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 运行项目

  • 启动开发服务器
    npm run dev
    
    Vite 会在 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. 小练习

动手实践是学习的关键!试试以下练习:

  1. src 下创建 components 文件夹,新建 Welcome.jsx
    export default function Welcome() {
      return <p>欢迎来到 React 世界!</p>;
    }
    
  2. 修改 src/App.jsx,引入并使用 Welcome 组件:
    import Welcome from './components/Welcome';
    
    function App() {
      return (
        <div className="App">
          <h1>我的第一个 React 应用</h1>
          <Welcome />
        </div>
      );
    }
    
    export default App;
    
  3. 运行项目,确认 <p>欢迎来到 React 世界!</p> 显示在页面上。

6. 总结与预告

本篇教程介绍了 React 的基本概念、核心理念和优势,并指导你搭建了开发环境,创建并运行了第一个 React 项目。通过修改代码和完成小练习,你已经初步掌握了 React 的基础。

下一篇文章将深入探讨 JSX 与组件基础,带你了解 React 的核心语法和组件化开发模式。敬请期待!


小贴士

  • 安装 React Developer Tools 浏览器扩展,方便调试。
  • 保持 Node.js 和 npm 版本更新,获得最佳体验。

希望这篇文章为你开启了 React 学习之旅!有任何疑问,欢迎留言交流,一起进步!

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

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

相关文章

LM-BFF——语言模型微调新范式

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

NVMe高速传输之摆脱XDMA设计2

NVMe IP放弃XDMA原因 选用XDMA做NVMe IP的关键传输模块&#xff0c;可以加速IP的设计&#xff0c;但是XDMA对于开发者来说&#xff0c;还是不方便&#xff0c;原因是它就象一个黑匣子&#xff0c;调试也非一番周折&#xff0c;尤其是后面PCIe4.0升级。 因此决定直接采用PCIe设…

pycharm无需科学上网工具下载插件的解决方案

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

Halcon计算点到平面的距离没有那么简单

Halcon计算点到平面距离 1. 一些基本概念2. 浅谈有无符号的距离2.1 无符号距离的用武之地2.2 有符号距离的必要性 3. 无符号距离怎么算3.1 创建一个无限延展的基准平面&#xff0c;对距离有什么影响&#xff1f;Halcon代码图示 3.2 创建一个小小小的基准平面&#xff0c;对距离…

数据中台如何设计?中台开发技术方案,数据治理方案,大数据建设方案合集

中台的价值与核心理念 中台的核心在于“企业级能力复用”&#xff0c;其价值体现在四大维度&#xff1a; 能力整合&#xff1a;将分散的数字化能力&#xff08;如营销、供应链&#xff09;集中管理&#xff0c;形成核心竞争力&#xff1b; 业务创新&#xff1a;通过跨领域融合…

Adminer 连接mssql sqlserver

第一步 docker-compose.yml adminer部分&#xff1a; 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必须包含相应的头文件&#xff0c;通常使用#include预处理指令。 2.头文件中包含了若干变量的声明&#xff0c;用于实现系统IO。 3.头文件的引用方式有双引号和尖括号两种&#xff0c;区别在于查找路径的不同。 4.C标准库提供的头文件通常没…

DELL EMC PowerStore BBU更换手册

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

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%);

三种常见脉冲神经网络编码方式解读

速率编码&#xff08;rate coding) 速率编码使用输入特征来确定尖峰频率&#xff0c;例如将静态输入数据&#xff08;如 MNIST 图像&#xff09;转换为时间上的脉冲&#xff08;spike&#xff09;序列。它是将神经元发放脉冲的频率与输入值&#xff08;如像素强度&#xff09;…

STM32F103 HAL多实例通用USART驱动 - 高效DMA+RingBuffer方案,量产级工程模板

导言 《STM32F103_LL库寄存器学习笔记12.2 - 串口DMA高效收发实战2&#xff1a;进一步提高串口接收的效率》前阵子完成的LL库与寄存器版本的代码&#xff0c;有一个明显的缺点是不支持多实例化。最近&#xff0c;计划基于HAL库系统地梳理一遍bootloader程序开发。在bootloader程…

HTML回顾

html全称&#xff1a;HyperText Markup Language&#xff08;超文本标记语言&#xff09; 注重标签语义&#xff0c;而不是默认效果 规则 块级元素包括: marquee、div等 行内元素包括: span、input等 规则1&#xff1a;块级元素中能写&#xff1a;行内元素、块级元素&…

机器视觉6-halcon高级教程

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

YOLOv8 的双 Backbone 架构:解锁目标检测新性能

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

1.4 TypeScript 编译是如何工作的?

TypeScript 是 JavaScript 的超集&#xff0c;最显著的优势是引入了静态类型检查。它能帮助开发者在编写代码阶段捕获错误&#xff0c;从而提升代码的健壮性和可维护性。虽然 TypeScript 本身不能直接在浏览器或 Node.js 中运行&#xff0c;但它可以被编译成标准的 JavaScript&…

Web 服务、 Nfs 服务器以及 Dns 服务器综合实验

要求&#xff1a; 1.web 服务的资源文件通过 nfs 服务器共享 www.luntan.com 2.确保所有主机时间同步 3.定义本地 dns 服务器解析 web 主机域名 实验&#xff1a; 主机服务程序192.168.96.142dns、nfs192.168.96.132web 服务器说明&#xff1a; 设备 IP服务端 192…

汇编语言的子程序魔法:解锁四则运算的奥秘

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

快速解决Linux 中yum镜像拉取失败问题

在linux中使用yum命令拉取镜像的时候&#xff0c;如果出现如下类似报错&#xff1a; 我这里是安装Erlang环境也是同样报错&#xff1a; 其实就是网络环境的问题&#xff0c;更换为国内的镜像源就行了&#xff0c;可以选择cmd的ssh连接方式(命令&#xff1a;ssh root192.168.xxx…

HarmonyOS基础组件:Button三种类型的使用

简介 HarmonyOS在明年将正式不再兼容Android原生功能&#xff0c;这意味着对于客户端的小伙伴不得不开始学习HarmonyOS开发语言。本篇文章主要介绍鸿蒙中的Button使用。 HarmonyOS中的Button相较于Android原生来说&#xff0c;功能比较丰富&#xff0c;扩展性高&#xff0c;减…

产业互联网+三融战略:重构企业增长密码

产业互联网时代&#xff1a;用"三融"重构企业增长飞轮 在产业互联网浪潮下&#xff0c;企业面临资源分散、资金短缺、人才难聚的三重挑战。本文提出的"融人、融资、融资源"顶层设计&#xff0c;正为新时代企业构建增长新引擎。 一、三级合伙人体系&#x…