Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม Bash

สร้างไฟล์ Config Jekyll แบบไดนามิก เพื่อการจัดการเว็บไซต์ที่เร็วกว่าและยืดหยุ่นกว่า

Jekyll เครื่องมือสร้างเว็บไซต์แบบคงที่ (static site generator) ใช้ _config.yml สำหรับการกำหนดค่า การกำหนดค่านั้นทั้งหมดเฉพาะเจาะจงกับ Jekyll แต่คุณยังสามารถกำหนดตัวแปรด้วยเนื้อหาของตัวเองในไฟล์เหล่านี้ และใช้ทั่วทั้งเว็บไซต์ ในบทความนี้ ผมจะเน้นข้อดีของการสร้างไฟล์ config Jekyll แบบไดนามิก

บนแล็ปท็อปท้องถิ่นของผม ผมใช้คำสั่งต่อไปนี้เพื่อ serve เว็บไซต์ Jekyll เพื่อทดสอบ:

bundle exec jekyll serve --incremental --config _config.yml

การรวมไฟล์การกำหนดค่าหลายไฟล์

ระหว่างการทดสอบในเครื่อง มีบางครั้งที่จำเป็นต้อง override ตัวเลือกการกำหนดค่า _config.yml ปัจจุบันของเว็บไซต์ผมมีการตั้งค่าดังนี้:

# 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

เนื่องจาก URL ของ jekyll serve ในเครื่องคือ http : //localhost:4000 URL ที่กำหนดข้างต้นจะไม่ทำงาน ผมสามารถสร้างสำเนาของ _config.yml เป็น _config-local.yml และแทนที่ค่าทั้งหมดได้ แต่มีทางง่ายกว่า

Jekyll อนุญาตให้ระบุไฟล์การกำหนดค่าหลายไฟล์ โดยการประกาศภายหลังจะ override การประกาศก่อนหน้า นี่หมายความว่าผมสามารถกำหนด _config-local.yml ใหม่ด้วยโค้ดต่อไปนี้:

url:""

จากนั้นผมสามารถรวมไฟล์ข้างต้นกับ _config.yml หลักของผมได้แบบนี้:

bundle exec jekyll serve --incremental --config _config.yml,_config-local.yml

โดยการรวมทั้งสองไฟล์ ค่าสุดท้ายของ url สำหรับ jekyll serve นี้จะเป็นว่างเปล่า ทำให้ URL ทั้งหมดที่กำหนดในเว็บไซต์ของผมกลายเป็น relative URLs และทำงานบนแล็ปท็อปท้องถิ่นของผมได้

การรวมไฟล์ config แบบไดนามิก

เป็นตัวอย่างง่ายๆ สมมติว่าคุณต้องการแสดงวันที่ปัจจุบันบนเว็บไซต์ คำสั่ง bash สำหรับสิ่งนี้คือ:

> date '+%A, %d %B %Y'
 Saturday, 16 October 2021

ผมรู้ว่าผมสามารถใช้ _config.yml ของ Jekyll สำหรับเนื้อหาที่กำหนดเองได้เช่นกัน ผมจะสร้างวันที่ข้างต้นไปยังไฟล์ config Jekyll ใหม่

my_date=`date '+%A, %d %B %Y'`; echo 'my_date: "'$my_date'"' > _config-data.yml

ตอนนี้ _config-data.yml มีเนื้อหา:

my_date: "Saturday, 16 October 2021"

ผมสามารถรวมไฟล์ config ใหม่นี้กับไฟล์อื่นๆ และใช้ตัวแปร my_date บนเว็บไซต์ของผม

bundle exec jekyll serve --incremental --config _config.yml,_config-local.yml,_config-data.yml

เมื่อรันคำสั่งข้างต้น {{ site.my_date }} จะแสดงค่าที่กำหนดไว้

สรุป

ตัวอย่างข้างต้นค่อนข้างง่าย แต่ความเป็นไปได้เป็นอันไม่มีที่สิ้นสุด Bash, Python และภาษาโปรแกรมมิ่งอื่นๆ สามารถสร้างไฟล์ config Jekyll แบบไดนามิกได้ ผมจึงสามารถรวมไฟล์เหล่านี้ระหว่างกระบวนการ build หรือ serve

สำหรับ findmymastodon.com ผมใช้ Python ดึงสถิติผู้ใช้ Mastodon จากนั้นเขียนลงในไฟล์ _config-data.yml ใหม่ (ปัจจุบันทำด้วยตนเอง) สุดท้าย หน้าแรกและหน้าอื่นๆ แสดงค่าเหล่านี้จากไฟล์ config วิธีนี้ทำให้ผมสามารถใช้ประโยชน์จาก backend แบบไดนามิก และยังคงความดีของ static website ที่ผมชอบ

หวังว่าจะจุดประกายไอเดียบางอย่างสำหรับเว็บไซต์ static ของคุณเอง Jamstack เยี่ยมสำหรับเว็บไซต์ static แต่คุณสามารถหลีกเลี่ยงการสร้าง API backend ทั้งระบบสำหรับเนื้อหาไดนามิก ไม่ลองใช้ build job สร้าง config files พร้อมเนื้อหาที่อัปเดตแทน? อาจไม่เหมาะกับทุกกรณีใช้งาน แต่ API น้อยลง หมายถึงส่วนประกอบโครงสร้างพื้นฐานที่เคลื่อนไหวน้อยลง

หวังว่าจะช่วยคุณได้ในโปรเจกต์เว็บไซต์ static ครั้งต่อไป อ่านต่อไป และ happy coding