实战篇:(二)React 创建项目并连接 MySQL 后台的实战教程

React 创建项目并连接 MySQL 后台的实战教程

一、项目概述

本篇博客将介绍如何使用 React 搭建前端项目,并通过 Node.js 和 MySQL 实现简单的后台数据连接。通过这个项目,你将掌握从前端到后端数据库的基础开发流程,适合初学者或正在项目实战中的开发者。

二、项目准备

1. 环境搭建

  • Node.js:确保已经安装 Node.js,可以通过命令 node -v 检查。
  • npm 或 yarn:用于管理项目的依赖包。
  • MySQL:作为数据库管理工具。
  • VSCode:代码编辑工具,安装必要的插件如 ESLint、Prettier 等。

2. 初始化 React 项目

使用 create-react-app 快速创建一个 React 项目:

npx create-react-app my-react-project
cd my-react-project

在这里插入图片描述

项目初始化完成后,可以使用以下命令启动开发服务器:

npm start

现在你可以在浏览器中访问 http://localhost:3000,查看 React 应用是否运行成功。
在这里插入图片描述

三、项目搭建 - 实战步骤

注:工具篇:(三)MacOS 两种方式下载 Node.js 并进行测试教程
注:工具篇:(一)MacOS 下使用 Navicat 管理 MySQL 数据库:详细图文教程与常见问题解决
注:工具篇:(二)MacOS 下载 MySQL 并进行配置连接,使用 VSCode 创建 Node 项目-亲测有效
注:工具篇:(五)MacOS使用Postman 测试接口:从 创建MySQL数据库到 Node 项目

1. 创建后端(Node + Express)

初始化 Node 项目

首先在项目根目录下创建一个新的文件夹用于后端代码:

mkdir my-react-node
cd my-react-node
npm init -y

在这里插入图片描述

然后安装必要的依赖包:

npm install express mysql2 dotenv
创建 Express 服务器

server 文件夹中创建 index.js 文件,配置一个简单的 Express 服务器:

const express = require('express');
const app = express();
const mysql = require('mysql2');
require('dotenv').config();

const db = mysql.createConnection({
  host: process.env.DB_HOST,
  user: process.env.DB_USER,
  password: process.env.DB_PASSWORD,
  database: process.env.DB_NAME
});

db.connect((err) => {
  if (err) throw err;
  console.log('Connected to MySQL database');
});

app.use(express.json());

app.get('/api/users', (req, res) => {
  db.query('SELECT * FROM users', (err, result) => {
    if (err) throw err;
    res.json(result);
  });
});

app.listen(5000, () => {
  console.log('Server is running on port 5000');
});
配置 .env 文件

server 文件夹中创建 .env 文件,添加数据库配置信息:

DB_HOST=localhost
DB_USER=root
DB_PASSWORD=yourpassword
DB_NAME=mydatabase

在这里插入图片描述

数据库表设计

使用 Navicat 或 MySQL 命令行创建一个 users 表:

CREATE TABLE users (
  id INT AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(255) NOT NULL,
  email VARCHAR(255) NOT NULL
);

四、React 前端与 Node 后端的连接

1. 安装 Axios

在前端项目中使用 axios 进行 API 请求:

npm install axios

2. 创建 API 请求

在 React 项目中创建一个简单的组件用于显示用户数据:

import React, { useEffect, useState } from 'react';
import axios from 'axios';

const Users = () => {
  const [users, setUsers] = useState([]);

  useEffect(() => {
    axios.get('http://localhost:5000/api/users')
      .then(response => {
        setUsers(response.data);
      })
      .catch(error => {
        console.error('There was an error fetching the users!', error);
      });
  }, []);

  return (
    <div>
      <h1>Users List</h1>
      <ul>
        {users.map(user => (
          <li key={user.id}>{user.name} - {user.email}</li>
        ))}
      </ul>
    </div>
  );
}

export default Users;

3. 跨域配置

为了让 React 前端能够访问 Node 后端 API,需要在服务器端添加 CORS 中间件:

npm install cors

index.js 中添加以下代码:

const cors = require('cors');
app.use(cors());

五、总结

通过本篇博客的实战步骤,成功搭建了一个 React 前端项目,并使用 Node.js 和 MySQL 作为后端服务。这种全栈开发的模式适合中小型项目开发,同时也为学习前后端分离架构打下坚实的基础。后续可以考虑增加更多功能,如用户注册、登录等。


你可以根据需求进一步扩展和定制项目。希望这篇教程对你有所帮助!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

中国各大一线及二线省会城市程序员收入大比拼,看看你所在的城市的统计是否准确

在中国&#xff0c;程序员的收入因城市、经验、学历等因素而有所不同。本文将对一线及二线省会城市的程序员收入进行详细比较&#xff0c;帮助大家了解各地的薪资水平。 一线城市程序员收入 上海 上海作为中国的经济中心&#xff0c;程序员收入最高。根据最新数据&#xff…

新生编程入门的方式探讨

关于如何编程入门&#xff0c;这是一个很好的问题。在上大学之前&#xff0c;并没有怎么接触电脑的我&#xff0c;也许可以谈一谈。 还记得在高中的时候&#xff0c;因为很多同学去网吧玩电脑打游戏&#xff0c;被学校开除&#xff0c;老师谆谆教诲大家不要去网吧&#xff0c;所…

Word粘贴时出现“文件未找到:MathPage.WLL”的解决方案

解决方案 一、首先确定自己电脑的位数&#xff08;这里默认大家的电脑都是64位&#xff09;二、右击MathType桌面图标&#xff0c;点击“打开文件所在位置”&#xff0c;然后分别找到MathPage.WLL三、把这个文件复制到该目录下&#xff1a;C:\Program Files\Microsoft Office\r…

SQLAlchemy入门:详细介绍SQLAlchemy的安装、配置及基本使用方法

SQLAlchemy是一个流行的Python SQL工具包和对象关系映射&#xff08;ORM&#xff09;框架&#xff0c;它为开发人员提供了一种高效、灵活的方式来与数据库进行交互。本文将详细介绍SQLAlchemy的安装、配置及基本使用方法&#xff0c;并通过代码示例和案例分析&#xff0c;帮助新…

SSL---SSL certificate problem

0 Preface/Foreword 0.1 SSL certificate problem 开发过程中&#xff0c;gitlab-runner连接gitlab时候出现SSL 证书问题。 场景&#xff1a;公司的gitlab runner服务器引入了SSL证书&#xff0c;每年都会主动更新一次。当前的gitlab-runner运行在PC机器上&#xff0c;但是g…

论文翻译 | OpenICL: An Open-Source Framework for In-context Learning

摘要 近年来&#xff0c;上下文学习&#xff08;In-context Learning&#xff0c;ICL&#xff09;越来越受到关注&#xff0c;并已成为大型语言模型&#xff08;Large Language Model&#xff0c;LLM&#xff09;评估的新范式。与传统微调方法不同&#xff0c;ICL无需更新任何参…

如何用好 CloudFlare 的速率限制防御攻击

最近也不知道咋回事儿,群里好多站长都反映被CC 攻击了。有人说依旧是 PCDN 干的,但明月感觉不像,因为有几个站长被 CC 攻击都是各种动态请求(这里的动态请求指的是.php 文件的请求)。经常被攻击的站长们都知道,WordPress /Typecho 这类动态博客系统最怕的就是这种动态请求…

C++模板初阶,只需稍微学习;直接起飞;泛型编程

&#x1f913;泛型编程 假设像以前交换两个函数需要&#xff0c;函数写很多个或者要重载很多个&#xff1b;那么有什么办法实现一个通用的函数呢&#xff1f; void Swap(int& x, int& y) {int tmp x;x y;y tmp; } void Swap(double& x, double& y) {doubl…

【自然语言处理】多头注意力Multi-Head Attention机制

多头注意力&#xff08;Multi-Head Attention&#xff09;机制是Transformer模型中的一个关键组件&#xff0c;广泛用于自然语言处理任务&#xff08;如机器翻译、文本生成等&#xff09;以及图像处理任务。它的核心思想是通过多个不同的注意力头来捕获输入的不同特征&#xff…

MedSAM2调试安装与使用记录

目录 前言一、环境准备多版本cuda切换切换cuda版本二 安装CUDNN2.1 检查cudnn 二、使用步骤1.安装虚拟环境2.测试Gradio3.推理 总结 前言 我们在解读完MedSAM之后&#xff0c;迫不及待想尝尝这个技术带来的福音&#xff0c;因此验证下是否真的那么6。这不&#xff0c;新鲜的使…

使用 KVM 在 Xubuntu 上创建 Windows 10 虚拟机

目录 前言说明注意准备 iso官网思博主(嘻嘻)拖动到虚拟机里面启动 virt-manager创建虚拟机选择本地安装介质选择 iso配置 内存 和 CPU选择 创建的虚拟机 保存的位置启动虚拟机看到熟悉的 Win10界面点击现在安装点击我没有产品密钥选择 Win10 专业工作站版勾选接受许可条款选择自…

《智慧博物馆:科技与文化的完美融合》

《智慧博物馆&#xff1a;科技与文化的完美融合》 一、智慧博物馆的兴起与发展 随着科技的飞速发展&#xff0c;智慧博物馆应运而生。进入新时代&#xff0c;大数据、人工智能、信息化的进步以及智能产品的应用&#xff0c;改变了人们接收信息和学习的习惯。为顺应社会变革&am…

【超详细】UDP协议

UDP传输层协议的一种&#xff0c;UDP(User Datagram Protocol 用户数据报协议)&#xff1a; 传输层协议无连接不可靠传输面向数据报 UDP协议端格式 定长报头&#xff0c;8字节源端口号和目的端口号来定位16位UDP长度, 表示整个数据报(UDP首部UDP数据)的最大长度如果校验和出错…

【C++】线程库常用接口

1.创建线程&#xff0c;等待线程&#xff0c;获取线程id 2.全局变量&#xff0c;局部变量&#xff0c;互斥锁 要让不同的线程访问同一个变量和同一把锁&#xff0c;有两种方法&#xff1a; 2.1方法一 定义全局的变量和全局的锁&#xff0c;这样自然就能访问到。 但全局变量在…

电能表预付费系统-标准传输规范(STS)(5)

5.5MeterFunctionObjects / companion specifications配套规格 With reference to Figure 1 it can be seen that the TokenCarrierToMeterInterface, which also includes the TokenCarrier, is dealt with in the IEC 62055-4x and IEC 62055-5x series. The remaining Mete…

论文 | OpenICL: An Open-Source Framework for In-context Learning

主要内容&#xff1a; 2. 提供多种 ICL 方法&#xff1a; 3. 完整的教程&#xff1a; 4. 评估和验证&#xff1a; 背景&#xff1a; 随着大型语言模型 (LLM) 的发展&#xff0c;上下文学习 (ICL) 作为一种新的评估范式越来越受到关注。问题&#xff1a; ICL 的实现复杂&#xf…

[ABC367C] Enumerate Sequences

1.注意输入的是哪个数组&#xff0c;输出的是哪个 2.dfs函数可以带两个参数&#xff0c;方便记录&#xff0c;一个记录第几个位置&#xff0c;一个记录题目的要求&#xff0c;例如求和。 3.注意递归出口输出后一定要return. #include<bits/stdc.h> using namespace std; …

Unity XR PICO 手势交互 Demo APK

效果展示 用手抓取物体&#xff0c;调整物体位置和大小等 亲测pico4 企业版可用&#xff0c; 其他设备待测试 下载链接&#xff1a; 我标记的不收费 https://download.csdn.net/download/qq_35030499/89879333

AI 编译器学习笔记之七三 -- 应用配置测试

1、通过jit_compile来进行算子调用控制 (不同的模型对推理的时间影响巨大) 昇腾pytorch代码地址&#xff1a;https://gitee.com/ascend/pytorch jit_compile true&#xff1a;走的是GEIR&#xff0c;进行了在线编译&#xff0c;可以用到的算子包含了 ascendC 、tbe、tik、aicpu…

Spring事务管理:应用实战案例和规则

背景 想象一下&#xff0c;如果没有Spring框架对事务的支持&#xff0c;我们得自行对事物进行管理&#xff1a; 获得JDBC连接、 关闭JDBC连接、 执行JDBC事务提交、 执行JDBC事务回滚操作 有了Spring事务框架&#xff0c;我们再也不需要在与事务相关的方法中处理大量的try.…