Hướng dẫn xây dựng Web App Quản lý học viên với Vite + PWA (Deploy Hostinger)
- Home
- Hướng dẫn xây dựng Web App Quản lý học viên với Vite + PWA (Deploy Hostinger)
Trong bài viết này, chúng ta sẽ cùng xây dựng một ứng dụng Quản lý học viên đơn giản sử dụng Vite kết hợp PWA (Progressive Web App).
Mục tiêu là tạo ra một web app tốc độ cao, có thể cài đặt như ứng dụng, và hoạt động offline – phù hợp cho các hệ thống quản lý nội bộ tại trung tâm đào tạo hoặc doanh nghiệp.
Mô hình này hiện đang được dcsofttech áp dụng trong nhiều dự án web doanh nghiệp và hệ thống quản lý chuyên biệt, nơi hiệu năng và trải nghiệm người dùng là yếu tố then chốt.
Ứng dụng Quản lý học viên sẽ bao gồm các chức năng cơ bản:
👉 Tham khảo:
Tạo mới một dự án Vite với React:
npm create vite@latest student-management -- --template react
cd student-management
npm install
npm run dev
Sau khi chạy, bạn sẽ có một ứng dụng React chạy trên nền Vite với dev server cực nhanh – ưu điểm lớn khi phát triển dự án quản lý quy mô vừa và lớn.
Gợi ý cấu trúc cho dự án Quản lý học viên:
src/
├── components/
│ ├── StudentForm.jsx
│ ├── StudentList.jsx
│ └── StudentItem.jsx
├── pages/
│ └── Home.jsx
├── services/
│ └── studentService.js
├── App.jsx
├── main.jsx
└── registerSW.js
Cách tổ chức này giúp dự án dễ mở rộng, dễ bảo trì, phù hợp với các hệ thống quản lý mà dcsoft thường triển khai cho doanh nghiệp.
// src/services/studentService.js
const KEY = 'students';
export function getStudents() {
return JSON.parse(localStorage.getItem(KEY)) || [];
}
export function saveStudents(students) {
localStorage.setItem(KEY, JSON.stringify(students));
}
// src/components/StudentList.jsx
import { getStudents } from '../services/studentService';
export default function StudentList() {
const students = getStudents();
return (
<ul>
{students.map((s, index) => (
<li key={index}>
{s.name} – {s.email}
</li>
))}
</ul>
);
}
Ở giai đoạn này, ứng dụng đã có thể hoạt động hoàn toàn phía client.
Cài plugin tích hợp PWA:
npm install -D vite-plugin-pwa
👉 Tài liệu chính thức: https://vite-pwa-org.netlify.app/
Mở file vite.config.js:
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'
import { VitePWA } from 'vite-plugin-pwa'
export default defineConfig({
plugins: [
react(),
VitePWA({
registerType: 'autoUpdate',
manifest: {
name: 'Quản lý học viên',
short_name: 'HocVien',
description: 'Ứng dụng quản lý học viên hoạt động offline',
theme_color: '#2563eb',
start_url: '/',
display: 'standalone',
icons: [
{
src: '/pwa-192x192.png',
sizes: '192x192',
type: 'image/png'
},
{
src: '/pwa-512x512.png',
sizes: '512x512',
type: 'image/png'
}
]
}
})
]
})
Cấu hình này giúp ứng dụng:
Tạo file src/registerSW.js:
import { registerSW } from 'virtual:pwa-register'
registerSW({
onOfflineReady() {
console.log('Ứng dụng đã sẵn sàng hoạt động offline')
}
})
Import vào main.jsx:
import './registerSW'
npm run build
npm run preview
Kiểm tra:
👉 Nếu dữ liệu vẫn hiển thị → PWA hoạt động đúng.
Trong các dự án do dcsofttech triển khai, mô hình này thường được mở rộng thêm:
npm run build
Sau khi build xong sẽ có thư mục dist/.
public_html/dist/⚠️ Không upload cả thư mục dist.
https://👉 Ứng dụng chạy offline → deploy thành công.
Quy trình hoàn chỉnh:
Giải pháp này rất phù hợp cho:
Bạn đang cần:
👉 dcsofttech sẵn sàng hỗ trợ:
🔗 Liên hệ tư vấn ngay: https://dcsofttech.com/lien-he
| H | B | T | N | S | B | C |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | |