从零开始创建React项目及制作页面

一、React 介绍

React 是一个由 Meta(原Facebook) 开发和维护的 开源JavaScript库,主要用于构建用户界面(User Interface, UI)。它是前端开发中最流行的工具之一,广泛应用于单页应用程序(SPA)和移动端应用开发中。

1. React 核心特点

a. 组件化开发

        React 的 UI 是由一个个小的、可复用的组件构成的,组件可以像积木一样组合在一起,构建出复杂的用户界面。

b. 声明式编程

        React 使用声明式的方式描述 UI。开发者只需要定义组件在不同状态下的样子,React 会自动更新和渲染界面。

c. 虚拟DOM

        React 使用虚拟DOM(Virtual DOM)来提升性能。当状态发生变化时,React 会先更新虚拟DOM,然后计算出最小的变更,再将变更应用到真实DOM中。

d. 单向数据流

        数据在React中是单向流动的(从父组件流向子组件),这使得数据管理更加清晰和可靠。

e. JSX语法

        React 提供了一种类似HTML的语法扩展——JSX,允许开发者在JavaScript中直接编写HTML结构。

2. React 的生态系统

a. React Router:用于处理路由。

b. Redux 或 Context API:用于状态管理。

c. Next.js:基于 React 的服务端渲染(SSR)框架。

d. React Native:用于开发跨平台的移动端应用。

3. React 的优点

a. 高效:通过虚拟DOM优化性能。

b. 灵活:支持与其他库或框架结合使用。

c. 可维护性高:组件化开发使代码结构清晰、易于维护。

d. 社区强大:丰富的社区资源和第三方库支持。

二、开发环境

1. Node.js 和 npm

  • 下载并安装 Node.js(包含 npm)。
  • 验证安装是否成功
    node -v
    npm -v
    

2. 代码编辑器

  •  推荐使用 Visual Studio Code。

 二、创建 React 项目

最简单的方式是使用官方工具 Create React App

1. 创建步骤

  • 打开终端或命令行工具,进入你想创建项目的目录
  • 运行以下命令
npx create-react-app my-app

  • 等待安装完成后,进入项目目录
cd my-app
  • 启动开发服务器
npm start
  • 浏览器会自动打开 http://localhost:3000,显示 React 的默认页面

2. 文件结构说明

my-app/
├── node_modules/       # 项目依赖目录
├── public/             # 静态资源目录
│   ├── favicon.ico     # 浏览器标签图标
│   ├── index.html      # 主 HTML 文件,React 挂载到此文件
│   ├── logo192.png     # 默认 logo 图片 (192x192)
│   ├── logo512.png     # 默认 logo 图片 (512x512)
│   ├── manifest.json   # PWA 配置文件
│   └── robots.txt      # 搜索引擎爬虫配置
├── src/                # 源代码目录
│   ├── App.css         # App 组件的样式文件
│   ├── App.js          # 主组件文件
│   ├── App.test.js     # App 组件的测试文件
│   ├── index.css       # 全局样式文件
│   ├── index.js        # 应用程序的入口文件
│   ├── logo.svg        # 默认 logo 文件 (SVG 格式)
│   ├── reportWebVitals.js # 性能监控文件
│   └── setupTests.js   # 测试环境的配置文件
├── .gitignore          # Git 忽略规则
├── package-lock.json   # 锁定依赖版本的文件
├── package.json        # 项目配置文件
└── README.md           # 项目说明文档

三、创建一个React页面

以下是详细的教程,包括如何创建页面组件、路由配置以及页面样式等

创建 React 页面步骤

1. 创建页面组件

React 中的页面通常是一个独立的组件。你可以在 src 目录下新建一个文件夹(如 pages),用于存放所有页面组件。

  • 在 src 目录下创建一个 pages 文件夹。
  • 在 pages 文件夹中创建一个新的页面组件文件,例如 MyPage.js

示例代码:

import React from 'react';
import './MyPage.css'; // 引入样式文件(可选)const MyPage = () => {return (<div className="my-page"><h1>欢迎来到我的页面</h1><p>这是一个属于自己的页面!</p></div>);
};export default MyPage;

2. 创建样式文件

为页面组件添加样式文件,让页面更美观。

  • 在 pages 文件夹中创建一个样式文件,例如 MyPage.css。

示例代码:

.my-page {text-align: center;background-color: #f0f8ff;padding: 20px;color: #333;
}.my-page h1 {font-size: 2rem;color: #007bff;
}.my-page p {font-size: 1.2rem;margin-top: 10px;
}

3.设置路由

在 React 中,路由是由 react-router-dom 提供的。你需要安装路由库并配置路由规则。

  • 确保安装了 react-router-dom
    npm install react-router-dom
    
  • src 目录下的 App.js 中配置路由.

示例代码:

import React from 'react';
import { BrowserRouter as Router, Routes, Route } from 'react-router-dom';
import MyPage from './pages/MyPage'; // 引入新页面
import Home from './Home'; // 假设有一个主页组件const App = () => {return (<Router><Routes><Route path="/" element={<Home />} /> {/* 主页 */}<Route path="/my-page" element={<MyPage />} /> {/* 新页面 */}</Routes></Router>);
};export default App;

4. 启动项目并访问页面

  • 启动开发服务器
npm start
  • 在浏览器中访问新页面

主页:http://localhost:3000/

新页面:http://localhost:3000/my-page

5. 可选功能

为了更方便地切换页面,可以添加一个导航栏

代码示例:添加导航栏,在src下创建 Navbar.js

import React from 'react';
import { Link } from 'react-router-dom';const Navbar = () => {return (<nav style={{ padding: '10px', backgroundColor: '#007bff', color: '#fff' }}><Link to="/" style={{ margin: '0 10px', color: '#fff', textDecoration: 'none' }}>主页</Link><Link to="/my-page" style={{ margin: '0 10px', color: '#fff', textDecoration: 'none' }}>我的页面</Link></nav>);
};export default Navbar;

修改 App.js:

将导航栏添加到页面中

import React from 'react';
import { BrowserRouter as Router, Routes, Route } from 'react-router-dom';
import Navbar from './Navbar'; // 导航栏组件
import MyPage from './pages/MyPage';
import Home from './Home';const App = () => {return (<Router><Navbar /> {/* 导航栏 */}<Routes><Route path="/" element={<Home />} /><Route path="/my-page" element={<MyPage />} /></Routes></Router>);
};export default App;

代码结构:

src/
├── pages/
│   ├── MyPage.js       # 新页面组件
│   └── MyPage.css      # 新页面样式
├── App.js              # 路由配置
├── Navbar.js           # 导航栏组件
├── Home.js             # 主页组件(示例)
└── index.js            # 应用入口

6. 打开页面

至此,可以成功创建属于自己的React页面。

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

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

相关文章

【前端部署】通过 Nginx 让局域网用户访问你的纯前端应用

在日常前端开发中&#xff0c;我们常常需要快速将本地的应用展示给局域网内的同事或测试人员&#xff0c;而传统的共享方式往往效率不高。本文将指导你轻松地将你的纯前端应用&#xff08;无论是 Vue, React, Angular 或原生项目&#xff09;部署到本地&#xff0c;并配置局域网…

【Python装饰器深潜】从语法糖到元编程的艺术

目录 🌟 前言🏗️ 技术背景与价值🩹 当前技术痛点🛠️ 解决方案概述👥 目标读者说明🧠 一、技术原理剖析📊 核心概念图解💡 核心作用讲解🔧 关键技术模块说明⚖️ 技术选型对比🛠️ 二、实战演示⚙️ 环境配置要求💻 核心代码实现案例1:基础计时装饰器案…

mbed驱动st7789屏幕-硬件选择及连接(1)

目录 1.整体介绍 2. 硬件选择 2.1 mbed L432KC 2.2 ST7789 240*240 1.3寸 3. mbed与st7789的硬件连接 4. 总结 1.整体介绍 我们在使用单片机做一些项目的时候,交互性是最重要的因素。那么对于使用者而言,交互最直接的体现无非就是视觉感知,那么我们希望将项目通过视觉…

SpringBoot集成Jasypt对数据库连接密码进行加密、解密

引入依赖 <!--配置密码加密--><dependency><groupId>com.github.ulisesbocchio</groupId><artifactId>jasypt-spring-boot-starter</artifactId><version>3.0.3</version></dependency><plugin><groupId>c…

分类器引导的条件生成模型

分类器引导的条件生成模型 分类器引导的条件生成模型1. **基本概念**2. **核心思想**3. **实现步骤&#xff08;以扩散模型为例&#xff09;**4. **优点**5. **挑战与注意事项**6. **应用场景**7. **数学推导**总结 分类器引导的条件生成模型 分类器引导的条件生成模型是一种通…

WPF中的ObjectDataProvider:用于数据绑定的数据源之一

ObjectDataProvider是WPF(Windows Presentation Foundation)中一种强大而灵活的数据绑定源&#xff0c;它允许我们将对象实例、方法结果甚至是构造函数的返回值用作数据源。通过本文&#xff0c;我将深入探讨ObjectDataProvider的工作原理、使用场景以及如何在实际应用中发挥其…

lasticsearch 报错 Document contains at least one immense term 的解决方案

一、问题背景 在使用 Elasticsearch 存储较大字段数据时&#xff0c;出现如下异常&#xff1a; ElasticsearchStatusException: Elasticsearch exception [typeillegal_argument_exception, reasonDocument contains at least one immense term in field"fieldZgbpka"…

[目标检测] YOLO系列算法讲解

前言 目标检测就是做到给模型输入一张图片或者视频&#xff0c;模型可以迅速判断出视频和图片里面感兴趣的目标所有的位置和它 的类别&#xff0c;而当前最热门的目标检测的模型也就是YOLO系列了。 YOLO系列的模型的提出&#xff0c;是为了解决当时目标检测的模型帧率太低而提…

服务器操作系统时间同步失败的原因及修复

服务器操作系统时间同步失败可能导致日志记录不准确、安全证书失效等问题。以下是常见原因及对应的修复方法&#xff1a; ### 一、时间同步失败的常见原因 1. **网络连接问题** - NTP服务器无法访问&#xff08;防火墙阻止、网络中断&#xff09; - DNS解析失败或网…

Cribl 中function 使用过滤的特殊case:Parser + rename

Cribl 利用function 对parser 进行特殊过滤处理: Parser Function – Fields Filter Expression​ When you use the Stream Parser Functions Reserialize option, there is a special option that becomes available, called the Fields Filter Expression. This is basica…

inverse-design-of-grating-coupler-3d

一、设计和优化3D光栅耦合器 1.1 代码讲解 通过预定义的环形间距参数(distances数组),在FDTD中生成椭圆光栅结构,并通过用户交互确认几何正确性后,可进一步执行参数扫描优化。 # os:用于操作系统相关功能(如文件路径操作) import os import sys# lumapi:Lumerical 的…

TuyaOpen横空出世!涂鸦智能如何用开源框架重构AIoT开发范式?

🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、引子:AIoT开发的“不可能三角”被打破 当AI与物理世界深度融合的浪潮席卷全球,开发者们却始终面临一个“不可能三角”——开发效率、技术深度与商业化落地难以兼得。 …

智慧赋能光伏运维——无人机巡检+地面监控双链路覆盖,打造光伏电站管理新标杆

一、引言&#xff1a;光伏电站运维的挑战与机遇 在全球能源转型浪潮下&#xff0c;光伏电站作为清洁能源的重要载体&#xff0c;其高效运维管理成为行业核心命题。然而&#xff0c;传统光伏电站运维存在覆盖范围广、设备分散、人工巡检效率低、故障响应慢等痛点。为破解这一难…

前端无感登录刷新

前端实现无感登录 在现代的前端开发中&#xff0c;用户体验是非常重要的一环。无感登录&#xff08;也叫自动登录&#xff09;就是其中一个提升用户体验的关键功能。它的目标是让用户在登录后&#xff0c;即使关闭浏览器或长时间不操作&#xff0c;也能在下次访问时自动登录&a…

JAVASE查漏补缺

这段时间学习了很多知识&#xff0c;好多还有疑问不清楚的地方。今天有空总结一下。 javame,javase,javaee 一、Java ME&#xff08;Micro Edition&#xff0c;微型版&#xff09; Java ME是一种适用于移动设备和嵌入式系统的小型Java平台&#xff0c;具有高度可移植性和跨平…

【设计模式】基于 Java 语言实现工厂模式

目录 一、简单工厂模式 1.1 简单工厂模式的介绍 二、工厂方法模式 2.1 工厂方法模式的介绍 2.2 工厂方法模式的基本实现 2.3 工厂方法模式的应用场景 三、抽象工厂 3.1 抽象工厂的概念 3.2 抽象工厂的基本结构 3.3 抽象工厂的基本实现 3.4 抽象工厂的应用场景 四、…

OpenCV CUDA模块中的矩阵算术运算------创建卷积操作对象的工厂方法 cv::cuda::createConvolution

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 createConvolution函数是OpenCV CUDA 模块中用于创建卷积操作对象的工厂方法。它返回一个指向 cv::cuda::Convolution 接口的智能指针&#xff0…

IDEA:程序编译报错:java: Compilation failed: internal java compiler error

目录 简介异常信息排查原因解决 简介 代码无法编译、无法打包 异常信息 java: Compilation failed: internal java compiler error排查 1、代码近期没有改动过&#xff0c;原先是可以正常编译的 2、查看程序JDK&#xff0c;是JDK1.8没错&#xff0c;与原先JDK一致 3、出现…

windows 10 做服务器 其他电脑无法访问,怎么回事?

一般我们会先打开win10自己的防火墙策略&#xff0c;但是容易忽略 电脑之间 路由器上的防火墙&#xff0c;此时也需要查看一下&#xff0c;可以尝试先关闭路由器防火墙&#xff0c;如果可以了&#xff0c;再 设置路由器上的防火墙规则。 将路由器的上网设置 改成 路由模式 &a…

【人工智能-agent】--Dify+Mysql+Echarts搭建了一个能“听懂”人话的数据可视化助手!

Echarts官网&#xff1a;https://echarts.apache.org/zh/index.html ECharts 是一个由百度团队开发的、基于 JavaScript 的开源可视化图表库&#xff0c;它提供了丰富的图表类型和强大的交互功能&#xff0c;能够帮助开发者轻松创建专业级的数据可视化应用。 核心特点 丰富的图…