如何利用React和Express搭建全棧JavaScript應(yīng)用
引言:
React和Express是目前非常流行的JavaScript框架,它們分別用于構(gòu)建前端和后端應(yīng)用。本文將介紹如何結(jié)合使用React和Express來搭建一個全棧JavaScript應(yīng)用。我們將逐步講解如何搭建一個簡單的TodoList應(yīng)用,同時提供具體的代碼示例。
一、準(zhǔn)備工作
在開始之前,我們需要準(zhǔn)備一些必要的工具和環(huán)境:
Node.js和npm:確保已經(jīng)安裝了Node.js和npm(Node.js的包管理器),可以通過命令行檢查它們是否已經(jīng)安裝成功,如下所示:
node -v npm -v
登錄后復(fù)制創(chuàng)建項目文件夾:在你的工作目錄下創(chuàng)建一個新的文件夾,用來存放我們的全棧應(yīng)用代碼。
二、后端搭建
初始化項目:在項目文件夾下打開命令行,執(zhí)行以下命令來初始化一個新的Node.js項目:
npm init -y
登錄后復(fù)制
這將會創(chuàng)建一個默認(rèn)的package.json文件,用來記錄項目的相關(guān)信息和依賴包。
安裝Express和其他依賴:在命令行中執(zhí)行以下命令來安裝Express和其他需要的依賴:
npm install express body-parser cors --save
登錄后復(fù)制
這里我們安裝了Express、body-parser和cors,用來處理HTTP請求和跨域請求。
創(chuàng)建Express服務(wù)器:在項目文件夾的根目錄下創(chuàng)建一個新的JavaScript文件,命名為server.js。打開server.js,并添加以下內(nèi)容:
const express = require('express');
const bodyParser = require('body-parser');
const cors = require('cors');
const app = express();
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.use(cors());
const PORT = process.env.PORT || 5000;
app.listen(PORT, () => {
console.log(`Server is running on port ${PORT}`);
});
登錄后復(fù)制
這段代碼首先引入了需要的依賴包,然后創(chuàng)建了一個Express實例并設(shè)置了一些中間件。最后,我們監(jiān)聽指定的端口(默認(rèn)是5000)。
- 添加路由和API:繼續(xù)編輯
server.js,在已有的代碼下方添加以下內(nèi)容:let todos = [];
app.get('/api/todos', (req, res) => {
res.json(todos);
});
app.post('/api/todos', (req, res) => {
const { todo } = req.body;
todos.push(todo);
res.json(todos);
});
登錄后復(fù)制
這段代碼定義了兩個路由:一個用于獲取所有的todo項,一個用于添加新的todo項。我們使用一個簡單的數(shù)組todos來存儲所有的todo項。
啟動服務(wù)器:在命令行中執(zhí)行以下命令來啟動Express服務(wù)器:
node server.js
登錄后復(fù)制
如果一切正常,你將會在命令行中看到Server is running on port XXXX的提示,表示服務(wù)器已成功啟動。
三、前端搭建
創(chuàng)建React應(yīng)用:回到項目文件夾,在命令行中執(zhí)行以下命令來創(chuàng)建一個新的React應(yīng)用:
npx create-react-app client
登錄后復(fù)制
這將會在項目文件夾下創(chuàng)建一個名為client的新文件夾,用來存放我們的React前端應(yīng)用代碼。
編輯React組件:打開剛剛創(chuàng)建的client/src/App.js文件,將其中的代碼替換為以下內(nèi)容:
import React, { useState, useEffect } from "react";
function App() {
const [todos, setTodos] = useState([]);
const [newTodo, setNewTodo] = useState("");
useEffect(() => {
fetch("/api/todos")
.then(res => res.json())
.then(data => setTodos(data));
}, []);
const handleInputChange = e => {
setNewTodo(e.target.value);
};
const handleSubmit = e => {
e.preventDefault();
const todo = { todo: newTodo };
fetch("/api/todos", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(todo)
})
.then(res => res.json())
.then(data => setTodos(data))
.catch(err => console.log(err));
setNewTodo("");
};
return (
<div>
<h1>Todo List</h1>
<form onSubmit={handleSubmit}>
<input value={newTodo} onChange={handleInputChange} />
<button type="submit">Add Todo</button>
</form>
<ul>
{todos.map((todo, index) => (
<li key={index}>{todo}</li>
))}
</ul>
</div>
);
}
export default App;
登錄后復(fù)制
這段代碼定義了一個React函數(shù)組件App,它用來展示todo列表。組件中使用了useState和useEffect兩個React的Hook來處理組件的狀態(tài)和副作用。我們通過fetch函數(shù)來發(fā)送HTTP請求和獲取數(shù)據(jù)。
啟動React應(yīng)用:在項目文件夾下打開命令行,進(jìn)入client文件夾,并執(zhí)行以下命令來啟動React開發(fā)服務(wù)器:
npm start
登錄后復(fù)制
如果一切正常,你將會在瀏覽器中看到一個簡單的TodoList應(yīng)用,你可以添加新的todo項。
結(jié)束語:
通過本文的步驟,我們成功地結(jié)合使用React和Express搭建了一個簡單的全棧JavaScript應(yīng)用。你可以根據(jù)自己的需求進(jìn)一步擴(kuò)展應(yīng)用的功能,比如添加編輯和刪除功能,或者使用數(shù)據(jù)庫來存儲數(shù)據(jù)。全棧開發(fā)能夠讓我們同時充分發(fā)揮前后端技術(shù)的優(yōu)勢,提高開發(fā)效率,希望本文對你有所幫助。
以上就是如何利用React和Express搭建全棧JavaScript應(yīng)用的詳細(xì)內(nèi)容,更多請關(guān)注www.92cms.cn其它相關(guān)文章!






