Dưới đây là hướng dẫn chi tiết để tạo một website sử dụng giao diện AdminLTE (một template quản trị phổ biến) kết hợp với ReactJS. AdminLTE cung cấp giao diện đẹp mắt và nhiều thành phần UI sẵn có, trong khi ReactJS giúp bạn xây dựng ứng dụng web động và hiệu quả. Chúng ta sẽ tích hợp AdminLTE vào một dự án ReactJS từng bước.

Thiết lập môi trường ReactJS
Trước tiên, bạn cần cài đặt môi trường ReactJS. Nếu chưa có Node.js, hãy tải và cài đặt từ nodejs.org.
- Tạo dự án ReactJS: Mở terminal và chạy lệnh sau để tạo một dự án React mới bằng create-react-app:
npx create-react-app adminlte-react
cd adminlte-react
Khởi động dự án: Chạy lệnh sau để kiểm tra dự án hoạt động:
npm start
Truy cập http://localhost:3000 trên trình duyệt để xem ứng dụng mặc định.
Tải và tích hợp AdminLTE
AdminLTE không có gói React chính thức, nhưng chúng ta có thể tích hợp các tệp tĩnh (CSS, JS) của nó vào dự án React.
- Tải AdminLTE:
- Truy cập trang GitHub của AdminLTE hoặc tải trực tiếp từ adminlte.io.
- Tải phiên bản mới nhất (ví dụ: AdminLTE 3.x) dưới dạng tệp ZIP và giải nén.
- Sao chép tài nguyên AdminLTE:
- Từ thư mục giải nén, sao chép hai thư mục dist và plugins vào thư mục public của dự án React (adminlte-react/public).
- Cấu trúc thư mục sẽ trông như sau:
adminlte-react/
├── public/
│ ├── dist/
│ ├── plugins/
│ ├── index.html
│ └── ...
├── src/
└── ...
Cập nhật index.html: Mở tệp public/index.html và thêm các liên kết CSS/JS của AdminLTE vào phần <head> và <body>. Dưới đây là ví dụ:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>AdminLTE React</title>
<!-- Google Font: Source Sans Pro -->
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,400i,700&display=fallback">
<!-- Font Awesome -->
<link rel="stylesheet" href="%PUBLIC_URL%/plugins/fontawesome-free/css/all.min.css">
<!-- Theme style -->
<link rel="stylesheet" href="%PUBLIC_URL%/dist/css/adminlte.min.css">
</head>
<body class="hold-transition sidebar-mini">
<div id="root"></div>
<!-- jQuery -->
<script src="%PUBLIC_URL%/plugins/jquery/jquery.min.js"></script>
<!-- Bootstrap 4 -->
<script src="%PUBLIC_URL%/plugins/bootstrap/js/bootstrap.bundle.min.js"></script>
<!-- AdminLTE App -->
<script src="%PUBLIC_URL%/dist/js/adminlte.min.js"></script>
</body>
</html>
Lưu ý: %PUBLIC_URL% đảm bảo đường dẫn chính xác khi build ứng dụng.
Tạo cấu trúc giao diện với React Components
AdminLTE có các thành phần chính như Header, Sidebar, Content và Footer. Chúng ta sẽ chia nhỏ giao diện thành các React components.
- Tạo các component: Trong thư mục src, tạo thư mục components và thêm các tệp sau:
- Header.js
- Sidebar.js
- Content.js
- Footer.js
- Ví dụ mã cho từng component:
- Header.js:
import React from 'react';
const Header = () => {
return (
<nav className="main-header navbar navbar-expand navbar-white navbar-light">
<ul className="navbar-nav">
<li className="nav-item">
<a className="nav-link" data-widget="pushmenu" href="#!" role="button">
<i className="fas fa-bars"></i>
</a>
</li>
</ul>
<ul className="navbar-nav ml-auto">
<li className="nav-item">
<a className="nav-link" href="#!">
<i className="fas fa-sign-out-alt"></i> Logout
</a>
</li>
</ul>
</nav>
);
};
export default Header;
Sidebar.js:
import React from 'react';
const Sidebar = () => {
return (
<aside className="main-sidebar sidebar-dark-primary elevation-4">
<a href="#!" className="brand-link">
<span className="brand-text font-weight-light">AdminLTE React</span>
</a>
<div className="sidebar">
<nav className="mt-2">
<ul className="nav nav-pills nav-sidebar flex-column" data-widget="treeview" role="menu">
<li className="nav-item">
<a href="#!" className="nav-link">
<i className="nav-icon fas fa-tachometer-alt"></i>
<p>Dashboard</p>
</a>
</li>
<li className="nav-item">
<a href="#!" className="nav-link">
<i className="nav-icon fas fa-users"></i>
<p>Users</p>
</a>
</li>
</ul>
</nav>
</div>
</aside>
);
};
export default Sidebar;
Content.js:
import React from 'react';
const Content = () => {
return (
<div className="content-wrapper">
<div className="content-header">
<div className="container-fluid">
<h1 className="m-0">Dashboard</h1>
</div>
</div>
<div className="content">
<div className="container-fluid">
<div className="card">
<div className="card-body">
<p>Welcome to AdminLTE with ReactJS!</p>
</div>
</div>
</div>
</div>
</div>
);
};
export default Content;
Footer.js:
import React from 'react';
const Footer = () => {
return (
<footer className="main-footer">
<div className="float-right d-none d-sm-block">
<b>Version</b> 1.0.0
</div>
<strong>Copyright © 2025.</strong> All rights reserved.
</footer>
);
};
export default Footer;
Kết hợp các component trong App.js: Mở src/App.js và thay thế nội dung bằng mã sau:
import React from 'react';
import Header from './components/Header';
import Sidebar from './components/Sidebar';
import Content from './components/Content';
import Footer from './components/Footer';
function App() {
return (
<div className="wrapper">
<Header />
<Sidebar />
<Content />
<Footer />
</div>
);
}
export default App;
Kiểm tra và tinh chỉnh
- Chạy ứng dụng:
npm start
Truy cập http://localhost:3000 để xem giao diện AdminLTE tích hợp với React.
Tinh chỉnh:
- Nếu sidebar không hoạt động (do thiếu jQuery), hãy đảm bảo các script trong index.html được tải đúng.
- Thêm các thành phần khác của AdminLTE (như bảng, biểu đồ) bằng cách tham khảo tài liệu chính thức và tạo thêm component React.
Tối ưu hóa (Tùy chọn)
- Sử dụng gói NPM: Thay vì sao chép thủ công, bạn có thể thử gói adminlte-2-react hoặc adminlte-reactjs từ NPM:
npm install adminlte-2-react
Tuy nhiên, các gói này có thể không hỗ trợ đầy đủ AdminLTE 3, nên cần kiểm tra tài liệu của gói.
Tách CSS: Để tối ưu hiệu suất, bạn có thể nhập CSS trực tiếp trong index.js thay vì index.html:
import './index.css';
import '../public/dist/css/adminlte.min.css';
import '../public/plugins/fontawesome-free/css/all.min.css';
Thêm tính năng động: Sử dụng React Router để tạo các trang khác nhau (Dashboard, Users, Settings) và Redux để quản lý trạng thái nếu dự án phức tạp.
Kết luận
Bạn đã tạo thành công một website sử dụng AdminLTE với ReactJS! Cách tiếp cận này kết hợp sức mạnh của React (tính module, tái sử dụng) với giao diện đẹp mắt của AdminLTE. Để mở rộng, bạn có thể thêm các tính năng như gọi API, xác thực người dùng hoặc tích hợp biểu đồ (Chart.js) từ plugin của AdminLTE.
Nếu bạn cần hướng dẫn thêm về cách tích hợp tính năng cụ thể (như bảng dữ liệu hoặc biểu đồ), hãy cho mình biết nhé!
CÔNG TY TNHH GIẢI PHÁP CÔNG NGHỆ TRANG DESIGNER
Trang Designer chuyên thiết kế website chuẩn SEO, thiết kế logo toàn diện giúp doanh nghiệp xây dựng một thương hiệu mạnh và bán hàng hiệu quả trên các nền tảng số cho nhiều lĩnh vực kinh doanh.
Vui lòng liên hệ: 138 Hiền Vương, Phường Phú Thạnh, Quận Tân Phú, TP. Hồ Chí Minh
Điện thoại: 0903.728.335
Website: www.trangdesigner.id.vn