Phát triển PWA (Progressive Web App)
Hướng dẫn trọn bộ xây dựng PWA: service worker, chiến lược cache, hỗ trợ offline và Workbox, kèm mã mẫu và checklist.
Lập trìnhTrung cấp★ 473⑂ 52Điểm AI 9/10Cập nhật lần cuối: 9 thg 11, 2026
Làm được gì
- Web App Manifest: ví dụ đầy đủ từ trường bắt buộc đến screenshots, shortcuts, share_target, file_handlers kèm checklist.
- Mẫu service worker: vòng đời install → activate → fetch, dọn cache cũ, mã đăng ký dùng ngay được.
- Chọn chiến lược cache: bảng ánh xạ Cache First / Network First / Stale While Revalidate / Network Only / Cache Only theo từng loại tài nguyên, kèm code.
- Workbox & công cụ build: cấu hình vite-plugin-pwa, next-pwa, template CRA và cách tự viết service worker bằng Workbox.
- Tính năng giống app gốc: prompt cài đặt, phát hiện chế độ standalone, push notification, background sync.
- Kiểm thử: lệnh Lighthouse CLI, checklist thủ công về khả năng cài đặt, offline, hiệu năng (FCP/LCP/CLS) và bảng lỗi thường gặp ↔ cách sửa.
Phù hợp với ai
- Lập trình viên front-end muốn biến web hiện có thành ứng dụng cài đặt được
- Nhóm làm sản phẩm phải chạy ổn ở nơi mạng chập chờn (tàu điện, nhà xưởng, vùng sóng yếu)
- Người đang gặp lỗi "đã deploy nhưng người dùng vẫn thấy bản cũ" do cache service worker
Ví dụ sử dụng
- Biến app Vite + React thành PWA: thêm plugin VitePWA với runtimeCaching (API dùng NetworkFirst, ảnh dùng CacheFirst) để có hỗ trợ offline.
- Gửi form khi offline: dùng BackgroundSyncPlugin của Workbox xếp hàng POST
/api/submitvà tự gửi lại khi có mạng. - Tối ưu luồng cài đặt: bắt sự kiện
beforeinstallpromptđể hiện nút cài đặt riêng, và kiểm tradisplay-mode: standaloneđể đổi giao diện khi đã cài.
· · · Hướng dẫn cài đặt · · ·
Dùng thử ngay, không cần cài
Dán đoạn dưới vào Claude là dùng được skill này mà không cần cài đặt.
Hãy đọc hướng dẫn trong tệp này và làm theo để giúp mình: https://raw.githubusercontent.com/aiskillstore/marketplace/HEAD/pending/alinaqi/pwa-development/SKILL.md Mình muốn: (viết việc bạn cần ở đây)
Nếu Claude không mở được liên kết, hãy mở liên kết và copy nội dung vào rồi dán.
↓ Thấy hữu ích thì tải ZIP bên dưới và cài. Sau đó skill tự chạy, không phải dán lại mỗi lần.
Cài vào ứng dụng Claude (không cần terminal)
- Tải tệp ZIP bằng nút bên dưới.
- Trong Claude, mở Settings → Capabilities và bật 'Code execution and file creation'. (chỉ một lần)
- Vào Customize → Skills → + → 'Upload a skill' rồi tải tệp ZIP lên.
Cài vào Claude Code
Để Claude làm — dán câu dưới đây vào Claude Code
Hãy cài skill mình tìm thấy trên AI Skill Mart. Copy thư mục pending/alinaqi/pwa-development từ repo GitHub aiskillstore/marketplace vào ~/.claude/skills/pwa-development/ của mình. Sau khi cài xong, cho mình biết skill này làm được gì trong một câu.
Cài bằng lệnh thủ công
git clone https://github.com/aiskillstore/marketplace.git /tmp/aiskillstore && mkdir -p ~/.claude/skills && cp -r /tmp/aiskillstore/pending/alinaqi/pwa-development ~/.claude/skills/⚠ Đây là skill do người khác tạo. Hãy kiểm tra repo gốc trước khi cài.
- Mở Terminal.
- Tải kho về:
git clone https://github.com/aiskillstore/marketplace.git /tmp/aiskillstore - Tạo thư mục skills:
mkdir -p ~/.claude/skills - Sao chép skill:
cp -r /tmp/aiskillstore/pending/alinaqi/pwa-development ~/.claude/skills/ - Kiểm tra bằng
ls ~/.claude/skills/pwa-developmentxem cóSKILL.mdkhông. - Khởi động lại Claude Code.
- Skill này tự kích hoạt (
user-invocable: false): hãy mở/sửasw.js,service-worker.js,manifest.json,workbox-config.*hoặc yêu cầu "thêm hỗ trợ offline". - (Tuỳ chọn) Nếu dùng ví dụ Workbox, cài thêm trong dự án:
npm install vite-plugin-pwa -D.