A Journey Through Web Development
จุดเริ่มต้นของ 9MZa.net เริ่มต้นมาจากช่วงสมัยเรียนมหาลัย อยากจะมีเว็บไซต์เเป็นของตัวเอง เนื้อหาที่คิดไว้ก็คงประมาณอยากจะแชร์เรื่องราวต่างๆ ก็คิดอยู่นานว่าเนื้อหา จะทำเกี่ยวกับอะไรดี บวกกับตอนนั้นที่เริ่มสนใจ Linux อยู่พอดี เข้าขั้นบ้ามาก ถึงขนาด notebook ใครผ่านมือ จะจับลง Linux ให้หมด 😅 ก็เลยคิดว่า งั้นก็ เขียนเรื่องนี้ละกัน ก็เลยเป็นที่มาว่าเนื้อหาเกือบทั้งหมด จะเป็นเรื่องเกี่ยวกับ Linux แทบทั้งนั้น
พอได้เรื่องที่จะเขียนแล้ว ตัวเว็บละจะใช้อะไรดี แน่นอนว่าตอนนั้นเราจะมองข้าม WordPress คนดีได้อย่างไร 😁 ก็ลงมือหา Hosting แล้วติดตั้ง WordPress ติดตั้ง Theme ที่ชอบ และเริ่มเขียนเนื้อหา พอทำไปสักพัก รู้สึกตอนนั้นน่าจะไม่ได้เขียนต่อเนื่องสักเท่าไหร่ เช่า Hosting น่าจะไม่ค่อยคุ้มสักเท่าไหร่ เลยหาหนทางใหม่ หาเครื่องมือใหม่ สำหรับทำเว็บ
มาลองใช้ Blogger ด้วยความที่มันฟรี น่าจะเหมาะกับเราที่ไม่ค่อยได้เขียนบทความต่อเนื่องสักเท่าไหร่ ก็เริ่มจากการหา Theme มาลง ปรับแต่งโน่นนั่นนี่ จนเป็นอันว่าเข้าที่เข้าทางเรียบร้อย (แต่ก็ไม่ได้หยุดที่ Blogger)
ต้องขอบคุณพี่ทีมงานจาก devahoy.com (ที่มีอยู่คนเดียว 😅) ที่ได้เปิดโลกผมเลยว่า ไม่จำเป็นต้องมี CMS เราก็สามารถจัดการ Content ได้อย่างง่ายด้วย Markdown ผมก็ลองใช้เลย Gatsby แต่ไม่ได้จะรู้ React เท่าไหร่เลย เจอ GraphQL เข้าไปอีก ยิ่งงงไปใหญ่ จนสุดท้ายก็มาจบที่ Gridsome ที่เป็นเหมือน Gatsby แต่เขียนด้วย Vue ต้องเข้าใจก่อนว่าตอนนั้นผมไม่ได้มีความรู้อะไรเกียวกับเว็บมากมายเลย เพิ่งจะเริ่มต้นรู้จัก HTML CSS แบบจริงๆ จังๆ เอง โครงสร้างของ Vue ก็เลยเป็นอะไรที่คุ้นเคยกับผมที่สุด ในตอนนั้น แต่เราจะหยุดตรงนี้ไหม ก็ไม่ 😅
หลังจากได้รู้จัก Nuxt ก็เห็นว่าน่าสนใจดี ทำ SSR ได้ด้วย แต่มันคือไรน้อ 😅 แต่ที่ผมสนใจคือมันมี Library ตัวนึง ชื่อ Content ที่มันจะทำหน้าที่ดึงพวกไฟล์ markdown มาเป็น content ให้ บวกกับไม่ชอบ GraphQL ด้วยในตอนนั้น ก็เลยมาลองใช้ แต่เราจะหยุดที่ตรงนี้ไหม ? ก็ไม่ 🤣
ช่วงนี้จะเป็นตอนที่ผมศึกษา JavaScript, React แบบจริงจัง เพราะอยากใช้ Next มากๆ ไม่รู้ทำไมเหมือนกัน สงสัยเว็บเขาสวยดูดีมั้ง เลยอยากใช้ 😅 ซึ่งผมคิดว่าน่าจะอยู่กับ Next นานที่สุดละ ก็เริ่มจากต้องเขียน function เพื่อดึงข้อมูล จาก markdown มาทำเอง ซึ่งจัดการอะไรเองแทบทั้งหมด ช่วงหลังดีหน่อยมี Library ชื่อ contentlayer มาช่วยจัดการให้ แถมเป็น Typescript ด้วย จนมาถึงช่วงตอนรีแบรนด์ ZEIT เป็น Vercel ผมเลยรู้สึกว่า Next มันเริ่มช้าจัง แถมกินแรมสุดๆ หมายถึงตอนที่ dev นะ บวกกับมี feature โน่นนั่นนี่เพิ่มเข้ามาเรื่อยๆ แต่เราก็ไม่ได้ใช้ขนาดนั้นเลยนะ ยังจำเป็นต้อง Next ไหม มีเครื่องมือตัวอื่นไหม
ผมเปลี่ยนมาใช้ Astro.js ช่วงต้นปีนี้เอง เหตุผลหลักที่เปลี่ยนก็คือ Next มันกินเครื่องผมตอน dev มากๆ แถมช้าด้วย (หรืออาจเป็นเพราะเครื่องผมกากมั้ง) จนตอนนี้แทบไม่อยากจะใช้ Next ละ ตอนนั้นผมชั่งใจระหว่าง hugo กับ astro อยู่ว่าจะใช้ตัวไหนดี แต่ก็เลือก astro เพราะคุ้นชินกับฝั่ง JS มากกว่า hugo เป็น Go หลังจากที่ได้ลองใช้ Astro ก็รู้สึกเลยว่า run เร็ว build เร็ว มีตัวจัดการ content มาให้ เสร็จสรรพ ใช้ไฟล์ mdx เป็น content ได้ด้วย ประกาศ type ให้กับ content เพื่อช่วยเรื่อง validate field ใน content ได้ ซึ่งผมสามารถใช้ code ชุดเดิมจาก project next.js ได้แทบทั้งหมด เว้นแต่บางอันที่ไม่อยากใช้ React component แล้ว เลยเป็น เป็น Astro component อ้อลืมบอกว่าใน Astro เราสามารถเขียน React, Vue, Svelte เข้าไปได้ สุดท้ายนี้ผมก็คิดว่าคงจะอยู่กับ Astro ยาวๆ แหละ
พอมาย้อนดูแล้ว ทั้งหมดทั้งมวลที่กล่าวมา แค่จะมีเว็บไว้เขียน Blog นี่เราเปลี่ยน Framework แทบทุกปีเลยหรอเนี่ย 🤣 ก็หวังว่าจะไม่ต้องเปลี่ยนอีกนะ อีกจุดประสงค์นึงที่ทำ Blog นี้ขึ้นมาก็เพื่ออยากจะเก็บสิ่งที่ตัวเองเรียนรู้หรือสิ่งที่สนใจในช่วงเวลานั้นๆ เพราะเรียนไปบางทีก็ลืม เลยจดไว้ดีกว่า ก็จะเห็นว่า บทความใหม่ก็เริ่มเอนไปทางทำเว็บละ สุดท้ายนี้ก็ขอบคุณทุกท่านที่เข้ามาอ่านนะครับ ถ้ามีคำถาม กดกล่องจดหมายข้างล่างได้เลย