0
0
Posts
Admin Team
Admin Teamtechmely

Hướng Dẫn Kết Nối Giao Diện React Với Backend Node.js Sử Dụng Express

Đăng vào 1 ngày trước

• 4 phút đọc

Chủ đề:

development

Kết Nối Giao Diện React Với Backend Node.js Sử Dụng Express

Trong bài viết này, chúng ta sẽ cùng nhau tìm hiểu cách thiết lập và kết nối giao diện frontend được xây dựng bằng React với backend sử dụng Node.js cùng với Express. Chúng ta sẽ tiến hành từng bước để xây dựng một ứng dụng mẫu, và cuối cùng là hiển thị dữ liệu từ server lên giao diện người dùng. Bắt đầu nào!

1. Thiết Lập Dự Án

Đầu tiên, hãy tạo một thư mục mới với tên simple_project và mở nó bằng IDE mà bạn thích. Cấu trúc dự án của chúng ta sẽ bao gồm hai thư mục chính:

  • frontend: Chứa ứng dụng React
  • backend: Chứa API của Node.js

2. Thiết Lập Giao Diện Frontend

Bên trong thư mục frontend, chúng ta sẽ sử dụng Vite để khởi tạo ứng dụng React, kèm theo Tailwind CSS để tạo giao diện đẹp mắt. Điều hướng vào thư mục này và chạy lệnh dưới đây để tạo ứng dụng:

bash Copy
npm create vite@latest

Khi được hỏi, hãy chọn:

  • Project name: .
  • Select a framework: React
  • Select a variant: JavaScript

Sau đó, cài đặt các phần phụ thuộc:

bash Copy
npm install

Tiếp theo, để sử dụng Tailwind CSS, hãy cài đặt các gói cần thiết:

bash Copy
npm install tailwindcss @tailwindcss/vite

Sau khi cài đặt, thư mục frontend của bạn sẽ nhìn như sau:

Copy
node_modules
public
src
  ├── App.jsx
  ├── index.css
  ├── main.jsx
.gitignore
...

3. Cấu Hình Vite

Sửa đổi tệp vite.config.js của bạn để tích hợp Tailwind CSS:

javascript Copy
import { defineConfig } from 'vite';
import tailwindcss from "@tailwindcss/vite";
import react from '@vitejs/plugin-react';

export default defineConfig({
  plugins: [react(), tailwindcss()]
});

4. Tạo Thành Phần Ứng Dụng

Mở tệp App.jsx và cập nhật nội dung như sau:

javascript Copy
function App() {
  return (
    <div className="min-h-screen w-full bg-gray-100 flex items-center justify-center flex-col gap-10">
      <h1 className="text-5xl font-bold text-gray-800">
        Kết Nối Backend Với Express và Node
      </h1>
      <ul className="rounded-2xl shadow-lg bg-white space-y-3"></ul>
    </div>
  );
}

export default App;

5. Thiết Lập Các Thành Phần Backend

Chuyển sang thư mục backend:

bash Copy
cd backend

Khởi tạo tệp package.json:

bash Copy
npm init -y

Trong tệp package.json, đặt thuộc tính main thành server.js, và thêm thuộc tính:

json Copy
"type": "module"

Cài đặt Express và CORS:

bash Copy
npm install express cors

Tạo tệp server.js trong thư mục backend và thêm nội dung sau:

javascript Copy
import express from "express";
import cors from "cors";

const app = express();

const CORS_OPTIONS = {
  origin: ["http://localhost:5173"]
};

app.use(cors(CORS_OPTIONS));

app.get("/", (req, res) => {
  res.json({
    blogPosts: [
      { title: "Trở lại của Neymar tại Santos", content: "Grêmio sẽ phải đối mặt với cạnh tranh khốc liệt khi Neymar trở lại Santos." },
      { title: "Tầm quan trọng của Marketing Kỹ thuật số đối với Doanh nghiệp", content: "Marketing kỹ thuật số là công cụ mạnh mẽ giúp thúc đẩy tăng trưởng doanh nghiệp. " }
    ]
  });
});

app.listen(8080, () => {
  console.log("Server đang chạy trên cổng 8080");
});

Chúng ta sử dụng CORS để cho phép giao tiếp giữa hai ứng dụng đang chạy trên các cổng khác nhau (5173 cho frontend và 8080 cho backend).

6. Lấy Dữ Liệu Từ Frontend

Quay lại thư mục frontend và cài đặt axios để thực hiện các yêu cầu HTTP:

bash Copy
npm install axios

Cập nhật App.jsx để lấy dữ liệu từ backend:

javascript Copy
import axios from "axios";
import { useEffect, useState } from "react";

function App() {
  const [data, setData] = useState([]);

  const fetchData = async () => {
    const response = await axios.get("http://localhost:8080");
    setData(response.data.blogPosts);
  };

  useEffect(() => {
    fetchData();
  }, []);

  return (
    <div className="min-h-screen w-full bg-gray-950 flex items-center justify-center flex-col gap-10">
      <h1 className="text-5xl font-bold text-gray-100">
        Backend với Express và <span className="text-green-400"> Node</span>
      </h1>
      <ul className="rounded-2xl shadow-lg p-5 bg-white space-y-3">
        {data.map((post, index) => (
          <li key={index} className="bg-sky-100 p-4 rounded-2xl hover:scale-105 transition-transform">
            <p className="text-xl font-semibold text-gray-800">{post.title}</p>
            <p className="text-sm text-gray-600">{post.content}</p>
          </li>
        ))}
      </ul>
    </div>
  );
}

export default App;

Sử dụng hook useState giúp lưu trữ dữ liệu đã lấy và useEffect đảm bảo dữ liệu được cập nhật ngay khi thành phần được gắn kết.

7. Chạy Ứng Dụng

Mở hai cửa sổ terminal để chạy cả frontend và backend:

bash Copy
# Trong thư mục frontend
npm run dev

# Trong thư mục backend
node server.js

Giờ đây, bạn có thể mở trình duyệt và truy cập vào http://localhost:5173/ để xem các bài viết trên blog hiển thị trên màn hình.

Chúc mừng bạn! Bạn đã hoàn thành việc kết nối thành công frontend React với backend Node.js thông qua Express!

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào