如何为 React 设置 Node.js Express 服务器
React 是一个 JavaScript 库,用于构建用户界面并使用可重用的 UI 组件开发单页应用程序。React 用于构建可与后端服务器通信的前端应用程序。
对于您想要构建的任何应用程序来说,连接到 Node 后端的 React 前端都是坚如磐石的组合。
本指南旨在帮助您尽可能轻松地使用 React 创建全栈项目。
先决条件
- 文本编辑器
- 您的计算机上安装了 Node.js
- 具备 React、Node 和 npm 的相关知识
您需要的工具
- 确保你的电脑上已安装 Node 和 NPM。你可以在nodejs.org下载这两个工具(NPM 已包含在你的 Node 安装包中)。
- 使用你选择的代码编辑器。我正在使用 VSCode,并且我个人推荐使用。你可以在code.visualstudio.com 下载 VSCode。
- 确保你的电脑上已安装 Git。你可以在git-scm.com下载。
步骤 1:后端
首先,创建项目的文件夹,将其命名为react-node-app,在文本编辑器中打开此文件夹
要创建我们的 Node 项目,请打开终端并运行以下命令
npm init -y
通过运行此文件,您将看到我们的文件夹中已创建 package.json 文件,该文件将帮助我们管理应用程序所需的依赖项。
现在,在我们的终端中,我们将安装 express 作为依赖项
npm i express
之后,我们将在 package.json 中创建一个脚本,当我们使用 npm start 运行它时,它将启动我们的 Web 服务器:
...
"scripts": {
"start": "node server/index.js"
},
...
我们的 package.json 文件应该是这样的
{
"name": "react-node-app",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node server/index.js"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"express": "^4.17.1"
}
}
现在,在我们的项目中创建一个新文件夹并将其命名为 server。
在 server 中创建 index.js 文件。
我们将使用 Express 为我们创建一个在端口 3001 上运行的简单 Web 服务器
// server/index.js
const express = require("express");
const PORT = process.env.PORT || 3001;
const app = express();
app.listen(PORT, () => {
console.log(`Server listening on ${PORT}`);
});
我们现在可以在终端中使用此脚本npm start运行我们的应用程序
npm start
> node server/index.js
Server listening on 3001
步骤 2:创建 API 端点
我们希望使用我们的 Node 和 Express 服务器作为 API,以便它可以为我们的 React 应用程序提供数据。
设置一个 GET 路由,稍后我们将从客户端 React App 中获取该路由。
// server/index.js
...
app.get("/api", (req, res) => {
res.json({ message: "Hello from Express!" });
});
app.listen(PORT, () => {
console.log(`Server listening on ${PORT}`);
});
确保将其放在 app.listen 上方
在这里,我们只是向我们的 React 应用程序发送“Hello from Express”
由于我们对服务器进行了更改,因此必须重新启动服务器。
为此,请打开终端,按 commmand/ctrl + c,然后通过运行 npm start 重新启动服务器。
现在我们可以在浏览器中访问http://localhost:3001/api并查看我们的消息:
{“message”:“来自 Express 的问候”}
步骤 3:创建 React 前端
现在让我们转到前端部分
打开另一个终端选项卡并使用 create-react-app 创建一个名为 client 的新 React 项目:
npx create-react-app client
设置代理
在此步骤中,当我们运行 create-react-app 命令时,Webpack 开发服务器会自动生成。
Webpack 开发服务器 (WDS) 是一种工具,可帮助开发人员对 Web 应用程序的前端进行更改并将其呈现到浏览器,而无需刷新浏览器。
我们唯一需要做的改变就是在 package.json 文件中添加一个名为 proxy 的属性。
这将允许我们向 Node 服务器发出请求,而无需在每次向其发出网络请求时提供其运行的来源( http://localhost:3001 ):
// client/package.json
...
"proxy": "http://localhost:3001",
...
修改后的 package.json 文件将如下所示
{
"name": "client",
"version": "0.1.0",
"private": true,
"dependencies": {
"@testing-library/jest-dom": "^5.14.1",
"@testing-library/react": "^11.2.7",
"@testing-library/user-event": "^12.8.3",
"react": "^17.0.2",
"react-dom": "^17.0.2",
"react-scripts": "4.0.3",
"web-vitals": "^1.1.2"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": [
"react-app",
"react-app/jest"
]
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
},
"proxy": "http://localhost:3001"
}
现在,我们可以通过运行启动脚本来启动 React 应用,该脚本与 Node 服务器相同。首先,请确保 cd 到新创建的客户端文件夹。
之后,将在 localhost:3000 上启动:
cd client
npm start
Compiled successfully!
You can now view client in the browser.
http://localhost:3000
步骤 4:从 React 向 Node 发出 HTTP 请求
现在我们有了一个可以运行的 React 应用程序,我们想使用它与我们的 API 进行交互。
让我们看看如何从我们之前创建的 /api 端点获取数据。
为此,我们可以转到 src 文件夹中的 App.js 组件并使用 useEffect 发出 HTTP 请求。
我们将使用 Fetch API 向后端发出一个简单的 GET 请求,然后将数据以 JSON 形式返回。
一旦我们收到返回的数据,我们将获取消息属性(获取我们从服务器发送的问候语),然后将其放入名为数据的状态变量中。
如果有的话,这将允许我们在页面中显示该消息。我们在 JSX 中使用了一个条件语句,表示如果数据尚未加载,则显示文本“正在加载...”。
// client/src/App.js
import React from "react";
import logo from "./logo.svg";
import "./App.css";
function App() {
const [data, setData] = React.useState(null);
React.useEffect(() => {
fetch("/api")
.then((res) => res.json())
.then((data) => setData(data.message));
}, []);
return (
<div className="App">
<header className="App-header">
<img src={logo} className="App-logo" alt="logo" />
<p>{!data ? "Loading..." : data}</p>
</header>
</div>
);
}
export default App;
结论
使用 Express 后端可以做很多事情,比如调用数据库,但在本指南中,我们专注于如何从客户端 React App 快速连接到后端 Express 服务器。
本指南中使用的代码片段和文件可在此处的 GitHub 存储库中访问。
如果你喜欢这篇文章,那么你可以给我买我的第一杯咖啡,谢谢
编码愉快!
文章来源:https://dev.to/pratham10/how-to-set-up-a-node-js-express-server-for-react-2fja