GitHub Pages là dịch vụ lưu trữ website tĩnh miễn phí của GitHub, cho phép người dùng triển khai trang web cá nhân, hồ sơ kỹ thuật hoặc tài liệu dự án chỉ với vài thao tác Git. Bài viết này phân tích cách xây dựng một trang web tĩnh hiện đại — lấy ví dụ từ một kho lưu trữ công khai có cấu trúc rõ ràng — để minh họa quy trình thiết kế HTML chuẩn, tổ chức tài nguyên hợp lý và triển khai tự động qua hệ thống kiểm soát phiên bản.
Cấu trúc HTML chuẩn và nguyên tắc thiết kế
Một trang web tĩnh hiệu quả bắt đầu từ việc tuân thủ cấu trúc HTML5 ngữ nghĩa. Thay vì sử dụng các thẻ <div> chung chung, các phần tử như <header>, <nav>, <main>, <section> và <footer> giúp máy tìm kiếm và công cụ hỗ trợ tiếp cận hiểu rõ hơn về vai trò từng khối nội dung.
Dưới đây là mẫu khung HTML tối giản nhưng đầy đủ tính năng:
<!DOCTYPE html>
<html lang="vi">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Hồ sơ phát triển viên | Nguyễn Văn A</title>
<link rel="stylesheet" href="/assets/css/main.css">
</head>
<body>
<header>
<h1>Nguyễn Văn A</h1>
<p>Kỹ sư phần mềm & Nhà thiết kế giao diện</p>
</header>
<nav>
<ul>
<li><a href="#gioi-thieu">Giới thiệu</a></li>
<li><a href="#du-an">Dự án</a></li>
<li><a href="#lien-he">Liên hệ</a></li>
</ul>
</nav>
<main>
<section id="gioi-thieu">
<h2>Về tôi</h2>
<p>Tôi chuyên phát triển ứng dụng web với React, TypeScript và Node.js.</p>
</section>
<section id="du-an">
<h2>Dự án nổi bật</h2>
<article>
<h3>Hệ thống quản lý học tập</h3>
<p>Ứng dụng full-stack cho trường học, tích hợp API REST và giao diện phản ứng.</p>
</article>
</section>
</main>
<footer id="lien-he">
<p>Email: contact@nguyenvana.dev | GitHub: @nguyenvana</p>
</footer>
<script src="/assets/js/main.js"></script>
</body>
</html>
Tổ chức thư mục và quản lý tài nguyên
Cấu trúc thư mục ảnh hưởng trực tiếp đến khả năng mở rộng và bảo trì. Một mô hình được khuyến nghị cho dự án GitHub Pages:
my-portfolio/
├── index.html
├── assets/
│ ├── css/
│ │ └── main.css
│ ├── js/
│ │ └── main.js
│ └── images/
│ ├── avatar.jpg
│ └── project-screenshot.png
├── .gitignore
├── README.md
└── CNAME (nếu dùng tên miền tùy chỉnh)
Tất cả đường dẫn trong HTML đều sử dụng định dạng tương đối từ gốc (/assets/...) để đảm bảo hoạt động đúng khi trang được phục vụ từ tên miền username.github.io hoặc tên miền tùy chỉnh.
Triển khai tự động qua GitHub Pages
Để kích hoạt GitHub Pages cho kho lưu trữ:
- Vào Settings → Pages trong giao diện kho lưu trữ trên GitHub.
- Chọn nhánh nguồn (thường là
mainhoặcgh-pages). - Chọn thư mục gốc (
/ (root)) hoặc thư mục/docsnếu muốn tách biệt tài liệu. - Lưu lại — GitHub sẽ tự động xây dựng và triển khai trang trong vòng vài giây đến vài phút.
URL mặc định sẽ có dạng: https://<tên-người-dùng>.github.io/<tên-kho>. Nếu kho có tên trùng với tên người dùng (ví dụ: nguyenvana.github.io), trang sẽ xuất hiện tại https://nguyenvana.github.io — không cần thêm tên kho.
Tối ưu hóa trải nghiệm phát triển
Để kiểm tra trang trước khi đẩy lên GitHub, bạn có thể chạy máy chủ cục bộ bằng lệnh đơn giản:
npx serve -s
Công cụ serve (từ npm) cung cấp máy chủ HTTP nhẹ, tự động phục vụ nội dung từ thư mục hiện tại và hỗ trợ chuyển hướng SPA — phù hợp hoàn hảo cho các trang tĩnh có điều hướng client-side.
Ngoài ra, việc tích hợp .gitignore để loại trừ các file không cần thiết (như node_modules, dist, hoặc file nhật ký) giúp giữ kho lưu trữ gọn gàng và an toàn.