Jekyll, trình tạo trang tĩnh, dùng _config.yml để cấu hình. Các cấu hình đều dành riêng cho Jekyll. Nhưng bạn cũng có thể định nghĩa biến với nội dung của riêng bạn trong các tệp này và dùng chúng xuyên suốt trang web. Trong bài viết này, tôi sẽ làm nổi bật một số lợi ích của việc tạo động các tệp cấu hình Jekyll.
Trên laptop cục bộ, tôi dùng lệnh sau để phục vụ trang Jekyll để test:
bundle exec jekyll serve --incremental --config _config.yml
Kết Hợp Nhiều Tệp Cấu Hình
Trong test cục bộ, đôi khi cần ghi đè tùy chọn cấu hình. _config.yml hiện tại của trang web tôi có các thiết lập sau:
# Jekyll Configuration # Site Settings url: "https://notes.ayushsharma.in" website_url: "https://notes.ayushsharma.in/" title: ayush sharma's notes ☕ + ? + ?️ email: ayush@ayushsharma.in images-path: /static/images/ videos-path: /static/videos/ js-path: /static/js/ baseurl: "" # the subpath of your site, e.g. /blog
Vì URL jekyll serve cục bộ là http : //localhost:4000, URL định nghĩa ở trên sẽ không hoạt động. Tôi luôn có thể tạo bản sao của _config.yml thành _config-local.yml và thay thế tất cả giá trị. Nhưng có một lựa chọn dễ dàng hơn.
Jekyll cho phép chỉ định nhiều tệp cấu hình với các khai báo sau ghi đè các khai báo trước. Điều này có nghĩa là tôi có thể định nghĩa _config-local.yml mới với mã sau:
url:""
Sau đó tôi có thể kết hợp tệp trên với _config.yml chính như này:
bundle exec jekyll serve --incremental --config _config.yml,_config-local.yml
Bằng cách kết hợp cả hai tệp, giá trị cuối cùng của url cho jekyll serve này sẽ rỗng. Điều này biến tất cả URL định nghĩa trong trang web thành URL tương đối và làm cho chúng hoạt động trên laptop cục bộ của tôi.
Kết Hợp Tệp Cấu Hình Động
Là ví dụ đơn giản, giả sử bạn muốn hiển thị ngày hiện tại trên trang web. Lệnh bash cho điều này là:
> date '+%A, %d %B %Y' Saturday, 16 October 2021
Tôi biết tôi có thể dùng _config.yml của Jekyll cho nội dung tùy chỉnh. Tôi sẽ xuất ngày trên vào tệp cấu hình Jekyll mới.
my_date=`date '+%A, %d %B %Y'`; echo 'my_date: "'$my_date'"' > _config-data.yml
Bây giờ _config-data.yml chứa:
my_date: "Saturday, 16 October 2021"
Tôi có thể kết hợp tệp cấu hình mới của tôi với các tệp khác và dùng biến my_date trên trang web.
bundle exec jekyll serve --incremental --config _config.yml,_config-local.yml,_config-data.yml
Khi chạy lệnh trên, {{ site.my_date }} xuất ra giá trị được cấu hình.
Kết Luận
Ví dụ trên khá đơn giản, nhưng khả năng là vô tận. Bash, Python, và các ngôn ngữ lập trình khác có thể tạo động tệp cấu hình Jekyll. Tôi có thể kết hợp chúng trong quá trình build hoặc serve.
Cho findmymastodon.com, tôi dùng Python để lấy thống kê người dùng Mastodon. Tôi sau đó ghi chúng vào tệp _config-data.yml mới (hiện tại thủ công). Cuối cùng, trang chủ và các trang khác hiển thị chúng từ tệp cấu hình. Cách này, tôi có thể tận dụng backend động và vẫn giữ được tất cả lợi ích trang web tĩnh mà tôi rất thích.
Tôi hy vọng điều này đã gợi ý một số ý tưởng cho dự án trang web tĩnh của bạn. Jamstack tuyệt vời cho trang web tĩnh, nhưng bạn có thể tránh tạo toàn bộ backend API cho nội dung động. Tại sao không dùng công việc build để tạo tệp cấu hình với nội dung cập nhật? Nó có thể không phù hợp mọi trường hợp, nhưng ít một API nghĩa là ít bộ phận cơ sở hạ tầng chuyển động hơn.
Tôi hy vọng điều này giúp bạn một cách nào đó trong dự án trang web tĩnh tiếp theo. Đọc tiếp, và chúc bạn viết mã vui vẻ.