Tính năng bình luận cho blog GitHub được triển khai không cần JS ở frontend
(github.com/nemorize)Tôi bắt đầu dự án này với mục tiêu xây dựng một blog không phục vụ bất kỳ đoạn mã JS nào ở phía frontend.
Blog hiện tại đã có tính năng bình luận dùng giscus,
nên việc triển khai bình luận mà không dùng JS là một trở ngại khá lớn.
Tôi đã triển khai tính năng bình luận bằng Cloudflare Workers và GitHub Actions.
Hệ thống hoạt động theo luồng dưới đây.
- Hiển thị biểu mẫu bình luận được host trên Cloudflare Worker.
- Người dùng đăng nhập bằng tài khoản GitHub thông qua biểu mẫu đó và gửi bình luận.
- Worker escape nội dung bình luận đã nhận, rồi chuyển nội dung đó lên GitHub thông qua workflow dispatches API của GitHub Actions.
- GitHub Actions dựa trên nội dung đã nhận để thêm mã bình luận vào file HTML của bài viết và commit thay đổi đó.
- Kết quả đã được commit sẽ được đưa vào production theo quy trình triển khai của GitHub Pages Actions.
Do được áp dụng theo quy trình ở bước 3-5 nên sẽ có một chút độ trễ để phản ánh thay đổi...
Tôi đã xử lý gọn bằng cách đơn giản là thêm một dòng thông báo. Trên các nền tảng blog như WordPress, những tính năng kiểu "bình luận chỉ hiển thị sau khi quản trị viên duyệt" vốn đã rất phổ biến, nên tôi cứ coi như khoảng trễ đó là lúc quản trị viên đang giả vờ kiểm duyệt. Chỉ cần bạn đang đọc bài này vờ như không biết là được.
Về mặt UX thì coi như đã giải quyết xong rồi haha
Đây chỉ là một hướng đi có ý nghĩa khi bạn thực sự muốn tránh dùng JS cho một blog cá nhân quy mô nhỏ, nên mong mọi người xem cho vui thôi nhé😅
Bạn có thể tự mình thử trực tiếp ở liên kết bên dưới!
https://nemorize.me/blog/202507/blog-renewal
4 bình luận
Thiên tài thật chứ..?haha
Chợt nhiên mình cũng tò mò không biết liệu LLM có làm được chuyện này không nữa haha
Cách giải quyết độ trễ thật mới lạ và thú vị 👏
Có phải kiểu headless CMS không nhỉ? Thú vị đấy.