อันนี้เป็น EP สุดท้ายสำหรับเนื้อหาหลักในซีรี่ส์ ทำ Blog ด้วย Jekyll แล้ว ที่เหลือจะเป็น Spin-off สำหรับการเอาความรู้พื้นฐานของการทำ Jekyll Blog มาดัดแปลง

ใครที่ตามอ่านมาจาก EP1, EP2 หรือ EP3 เปิดโค้ด Jekyll Blog ของตัวเองขึ้นมาใน Text Editor แล้วมาเริ่มโค้ดกันได้เลย!

Entry นี้มีอะไรบ้าง

Requirements

เพิ่มลูกเล่นให้ Blog post

ปกติเวลาเราเขียน entry ใหม่ขึ้นมาใน blog เราแค่สร้างไฟล์ไว้ที่โฟลเดอร์ _posts ด้วยฟอร์แมต yyyy-MM-dd-blog-name.markdown แล้วบอกว่าจะใช้ post เป็น layout template ไว้ที่หัวไฟล์(front matter)แบบนี้

_posts/2019-05-10-example-blog.markdown
---
layout: post
title: "ลองเขียนเล่นๆ"
date: 2019-05-10 00:00 +0700
---
# Markdown 
<!-- ลองเขียน markdown -->
# หัวข้อ 1
## หัวข้อ 2
### หัวข้อ 3
[ลิ้ง](link)


# Html
<!-- ลองเขียน html -->
<h1>Heading 1</h1>
<h2>Heading 2</h2>
<h3>Heading 3</h3>
<div>แบ่ง division ได้ด้วย</div>


# Liquid tag
<!-- เขียน liquid tag -->
{% if page.title %}
    ชื่อหัวข้อ: {{ page.title }}
{% else %}
    ไม่มีชื่อหัวข้อ
{% endif %}

save > refresh เปิด localhost:4000 แล้วกดที่บล็อก “ลองเขียนเล่นๆ” จะเห็นแบบนี้

1

สมมติว่า…

เราเขียนบล็อกไปเรื่อยๆ แล้วอยากจะเน้นข้อความให้มันดูเด่นขึ้นมา เราสามารถใช้ html กับ css เขียนในเนื้อหาของบล็อก เพื่อช่วยเปลี่ยนสีเฉพาะข้อความที่เราอยากเน้นได้ ตัวอย่างเช่น

_posts/2019-05-10-example-blog.markdown
---
layout: post
title: "ลองเขียนเล่นๆ"
date: 2019-05-10 00:00 +0700
---

ลองเขียนบล็อกดู 

ฮั่นแน่ ชอบ<span style="color: #159957;">ไฮไลท์</span>เหรอ

กด save แล้วไป refresh ได้ผลลัพธ์ออกมาเป็นแบบนี้

2

ลองดูโค้ดข้างล่างนี้

_posts/2019-05-10-example-blog.markdown
---
layout: post
title: "ลองเขียนเล่นๆ"
date: 2019-05-10 00:00 +0700
---

ลองเขียนบล็อกดู 

ฮั่นแน่ ชอบ<span style="color: #159957;">ไฮไลท์</span>เหรอ

ฮั่นแน่ ชอบ<span style="color: #159957;">ไฮไลท์</span>เหรอ

ฮั่นแน่ ชอบ<span style="color: #159957;">ไฮไลท์</span>เหรอ

ฮั่นแน่ ชอบ<span style="color: #159957;">ไฮไลท์</span>เหรอ

แล้วถามว่าถ้าเราอยากจะเปลี่ยนสีไฮไลท์ทุกที่ ให้เป็นสีอื่น ด้วยสีเดียวกัน จะทำยังไงล่ะ?

Mr.A
ง่ายๆ กด Find แล้วก็ Replace สิครับ

เออ .. ก็ได้อยู่นะ แล้วถ้าโค้ดไฮไลท์นี้ มันมีอยู่ที่ post อื่นด้วยล่ะ?

Mr.A
Find in files แล้วก็ Replace ก็ได้นะ

อื้ม … แล้วถ้าเกิด เราลืม Replace ที่ใดที่หนึ่งล่ะ?

Mr.A
ก็เปิดไปหน้านั้น แล้วค่อยไปเปลี่ยนโค้ดก็ได้

แล้วถ้า style ของ span นี้ มันไม่ได้มีแค่ color ที่เราอยากจะเปลี่ยน แต่ว่าอยากเพิ่ม margin, padding, border, box-shawdow, background, text-transform, font-weight, font-size ด้วยละ เราต้องไปทำทุกไฟล์เลยเหรอ?

ถึงจุดนี้ วิธีการ Find & Replace ของมิสเตอร์ A จะใช้เวลาในการหาแล้วเพิ่มโค้ดมากกว่าแค่จะเปลี่ยนสี และไม่มีอะไรมาการันตีว่ามิสเตอร์ A จะไม่ลืมเพิ่มโค้ดในทุกๆจุดให้เหมือนกัน

ดังนั้นกลับมาที่ concept โปรแกรมมิ่งที่คนเขียนโค้ดอย่างพวกเราควรท่องเอาไว้ในใจเสมอ

DRY – Don't Repeat Yourself
อย่าเขียนโค้ดหรือก๊อปปี้โค้ดที่มันทำงานเหมือนๆกัน แล้วเอาไปแปะไว้ตรงนั้นตรงนี้ เพราะถ้าเราอยากจะแก้ไขมันหนึ่งที่ เราต้องไปไล่แก้ที่ที่มีโค้ดนี้ให้เหมือนกันหมด

ซึ่งโชคดี ที่ Jekyll มี _includes เอาไว้ลดการเขียนโค้ดซ้ำๆ ตอนนั่งทำบล็อก ด้วยการสร้าง component

สร้าง component ใน Jeyll

บางที่ก็เรียกว่าเขียน template บางที่ก็เรียกว่า component แต่ตอนนี้ Web Component กำลังมาแรง เลยขอเรียกแบบนี้ละกัน เท่ดี 555+

ทำไมต้องสร้าง component? กลับไปอ่าน quote ด้านบน

เราสร้าง component เพื่อลดการเขียนโค้ดซ้ำๆ ประหยัดเวลาในการกลับมาแก้โค้ดของเราในอนาคต และยังเอามันไป reuse ได้อีกด้วย!

เรียกว่าทำหนึ่งได้ถึงสาม งั้นเรามาเริ่มกันเลย

  1. สร้างโฟลเดอร์ _includes ในโปรเจ็ค ประมาณนี้ แล้วสร้างไฟล์ชื่อ highlight-text.html ไว้ข้างใน
     ~/blog/
     |   _config.yml        
     |   .          
     |   . ไฟล์ต่างๆ  
     |   .                       
     |
     └─── _posts/
     |
     └─── _includes_/                    <<<<< สร้างโฟลเดอร์นี้   
         |   highlight-text.html         <<<<< สร้างอันนี้เพิ่ม
    
  2. เอาโค้ด span เมื่อกี้ ยัดเข้าไปในไฟล์เลย
    <span style="color: #159957;">{{ include.content }}</span>
    
  3. กด save เป็นอันเสร็จ

ใช้ component

เราสร้าง component กันไปแล้ว ว่าแต่จะเอาไปใช้ยังไง?

เปิดบล็อกของเราขึ้นมาค่ะ ตะกี้

_posts/2019-05-10-example-blog.markdown
---
layout: post
title: "ลองเขียนเล่นๆ"
date: 2019-05-10 00:00 +0700
---

ลองเขียนบล็อกดู 

ฮั่นแน่ ชอบ<span style="color: #159957;">ไฮไลท์</span>เหรอ

ลบ <span> ทั้งหลายออก แล้วใช้ liquid tag include แบบนี้แทน

_posts/2019-05-10-example-blog.markdown
---
layout: post
title: "ลองเขียนเล่นๆ"
date: 2019-05-10 00:00 +0700
---

ลองเขียนบล็อกดู 

ฮั่นแน่ ชอบ{% include highlight-text.html content="ไฮไลท์" %}เหรอ

ถ้ามีหลายอันก็

_posts/2019-05-10-example-blog.markdown
---
layout: post
title: "ลองเขียนเล่นๆ"
date: 2019-05-10 00:00 +0700
---

ลองเขียนบล็อกดู 

ฮั่นแน่ ชอบ{% include highlight-text.html content="ไฮไลท์" %}เหรอ

ฮั่นแน่ ชอบ{% include highlight-text.html content="ไฮไลท์" %}เหรอ

ฮั่นแน่ ชอบ{% include highlight-text.html content="ไฮไลท์" %}เหรอ

ฮั่นแน่ ชอบ{% include highlight-text.html content="ไฮไลท์" %}เหรอ

กด save แล้ว refresh ได้ผลลัพธ์เหมือนเดิม

3

เพิ่มเติมคือ ต่อไปถ้าอยากจะใส่ style หรือเขียนโค้ด html อะไรเพิ่มใน highlight text ก็ไม่ต้องไปใส่แก้ไฟล์ใน _posts ทุกไฟล์แล้ว แก้แค่ _includes/highlight-text.html ก็เพียงพอ

ขออธิบายเพิ่มเติม

{% include highlight-text.html content="ไฮไลท์" %}

หมายถึงให้ include ไฟล์ที่ชื่อว่า highlight-text.html ที่อยู่ในโฟลเดอร์ _includes เข้ามาด้วย โดยส่งตัวแปรที่ชื่อว่า content มีค่าข้างในคือคำว่า ไฮไลท์ เข้าไปแทนที่ {{ include.content }} ที่อยู่ในไฟล์ highlight-text.html แล้ว Jekyll ก็ render โค้ดออกมาตามภาพด้านบนที่เราเห็นคำว่า ไฮไลท์ เป็นสีเขียว

concept ของ component templates ใน Jekyll ก็ประมาณนี้

แล้วเราจะเขียน component อะไรมาใช้ได้บ้างล่ะ?

โหยย บอกเลยว่าเยอะะะะมากกกกกกกก แล้วแต่ว่าเราจะรังสรรค์อะไร อยากให้มีอะไรในบล็อกของเราบ้าง

อย่างในบล็อกนี้ที่เห็นกันผ่านๆตาบ่อยๆก็เยอะแยะ เช่น

อันนี้ที่นี่เรียก focus text

ส่วนนี่เป็น low focus text

อันนี้เป็นชื่อไฟล์ข้างบนโค้ด
Mr.A
dialog block คำพูดของ Mr.A
ทำ panel เปิดปิดแบบนี้ได้ด้วย

ทั้ง signature ด้านล่างทุก entry, สารบัญลิ้งด้านบน (Entry นี้มีอะไรบ้าง), หรือลิ้งไปอ่าน EP อื่นใน series เดียวกันของบล็อกนี้ ก็ล้วนเขียนเป็น component ไว้ใน _includes ทั้งสิ้น เข้าไปดู sourcecode จิ้มจ้า

คือมันแล้วแต่เราจะเขียนเลย อยากจะ advance แค่ไหนก็ได้หมด ลองเปิด Google ดู บางทีก็มีคนทำ Plugins เอาไว้ให้แล้ว

โดยส่วนตัวแล้ว ชอบเขียนใช้เองมากกว่าพึ่ง Plugins เพราะว่าปลั้กอินบางตัว จะ customize อะไรก็ยาก หรืออาจจะหยุดซัพพอร์ตไปแล้ว ถ้าเราเขียนเอง เราย่อมรู้ว่าโค้ดของเราอยู่ตรงไหน ทำงานยังไง จะแก้อะไรก็สะดวกใจกว่า เลยชอบเขียนเอง แต่ถ้าปลั้กอินเพียบพร้อมมากๆ ก็จะเอามาใช้ เพราะขี้เกียจ 555

ด้วยความที่มันเปิดบน Browser ได้ ก็สามารถเขียน javascript ลงไปได้ด้วย แค่ใส่ <script type="text/javascript"></script> ลงไปก็ใช้ javascript ได้แล้ว

ถ้าใครถนัด Angular, JQuery, React หรืออยากใช้ tools อื่นๆร่วมกับ Jekyll ก็ย่อมได้ แค่แอด library เข้ามาใน header ของหน้า default.html แล้วเขียนโค้ดลงไปตรงที่ต้องการก็จบ

ก่อนจบเนื้อหาหลัก

สำหรับ series ทำ Blog ด้วย Jekyll ตั้งใจจะเขียนเนื้อหาหลักไว้แค่ 4 Parts ที่เหลือจะเป็น Spin-off หมดและ

ซึ่งใน Spin-off จะเน้นโค้ดสำหรับทำ component ต่างๆไว้ใช้, ทำ seo, ติด google analytic, ติด social media sharing หรืออะไรก็ตามที่นั่งทำๆไปแล้วคิดว่ามันเจ๋ง อยากให้มาอยู่ในบล็อก ไว้จะทยอยๆทำ แล้วตามอัพเดตนะคะ

ขอบคุณที่เข้ามาอ่านมากๆ หวังว่าจะเป็นประโยชน์และเริ่มเขียนบล็อกกันเองมากขึ้น

ขอให้สนุกกับการทำบล็อกและงมโค้ดค่ะ

สวัสดีค่ะ

May the </code> be with you

share
10 May 2019 19:30
11 May 2019 17:39