Hardware
เฮ้! น้องๆ เคยได้ยินคำว่า Deno กับ Fresh Framework กันบ้างไหม? สมัยผมทำร้านเน็ต SiamCafe เนี่ย เมื่อก่อนเราใช้แต่ PHP, ASP, .NET อะไรพวกนั้น แต่โลกมันเปลี่ยนไปไวมาก สมัยนี้ JavaScript มันบุกทุกที่จริงๆ
Deno เนี่ย มันคือ runtime environment สำหรับ JavaScript และ TypeScript ที่สร้างโดย Ryan Dahl คนเดียวกับที่สร้าง Node.js นั่นแหละ แต่ Deno แก้ปัญหาหลายๆ อย่างที่ Node.js มี เช่น เรื่อง security ที่ Deno จะ secure กว่า เพราะต้องขอ permission ก่อนถึงจะเข้าถึงไฟล์หรือ network ได้
ส่วน Fresh Framework เนี่ย เป็น web framework ที่สร้างขึ้นมาสำหรับ Deno โดยเฉพาะ เน้นเรื่อง performance สุดๆ เพราะมัน render component บน server เป็นส่วนใหญ่ ทำให้โหลดหน้าเว็บไวมาก แถมยังไม่ต้องใช้ JavaScript มากมายบน client อีกด้วย เหมาะกับเว็บที่เน้น content หรือ e-commerce ที่ต้องการ SEO ดีๆ
TypeScript เนี่ย มันคือ JavaScript ที่มี type เพิ่มเข้ามา สมัยผมเขียน JavaScript แรกๆ นี่ปวดหัวมาก error อะไรก็ไม่รู้ กว่าจะ debug ได้แต่ละที แต่พอมาใช้ TypeScript ชีวิตง่ายขึ้นเยอะ เพราะมันช่วยจับ error ตอน compile time ได้เลย
// JavaScript
function add(a, b) {
return a + b;
}
// TypeScript
function add(a: number, b: number): number {
return a + b;
}
ดู code ข้างบนสิ! TypeScript มันบอกเลยว่า `a` กับ `b` ต้องเป็น `number` และ function นี้จะ return `number` ทำให้เรามั่นใจได้ว่า code เราจะไม่พังง่ายๆ
SSR คือการ render หน้าเว็บทั้งหมดบน server แล้วส่ง HTML ที่ render เสร็จแล้วไปให้ browser ข้อดีคือ SEO ดีขึ้น, หน้าเว็บโหลดไวขึ้น (เพราะไม่ต้องรอ JavaScript โหลดเสร็จ) และ browser เก่าๆ ก็ยังแสดงผลได้
สมัยก่อนเราทำ SSR ด้วย PHP หรือ ASP กันเป็นหลัก แต่สมัยนี้ JavaScript ก็ทำได้แล้ว Fresh Framework ก็เน้นเรื่องนี้เป็นพิเศษ
เอาล่ะ มาเริ่มลงมือทำกันเลยดีกว่า! ง่ายมากๆ เหมือนปอกกล้วยเข้าปาก (แต่กล้วยที่ปอกแล้วมันดำเร็วนะ อย่าทิ้งไว้นาน)
ก่อนอื่นต้องติดตั้ง Deno ก่อนนะ เปิด terminal แล้วพิมพ์คำสั่งนี้เลย:
curl -fsSL https://deno.land/x/install/install.sh | sh
พอติดตั้งเสร็จแล้ว ให้ set path ให้ Deno ด้วยนะ (มันจะบอกตอนติดตั้งเสร็จ)
ต่อมาก็สร้างโปรเจกต์ Fresh ได้เลย ใช้คำสั่งนี้:
deno run -A npm:create-fresh@latest .
มันจะถามชื่อโปรเจกต์ ก็ตั้งชื่ออะไรก็ได้ตามใจชอบ (แต่ชื่อห้ามมี space นะ)
พอสร้างเสร็จแล้ว ก็เข้าไปใน folder โปรเจกต์ แล้วรันคำสั่งนี้:
deno task start
แค่นี้เอง! เปิด browser แล้วเข้าไปที่ `http://localhost:8000` ก็จะเห็นหน้าเว็บ Fresh แล้ว
อยากรู้เรื่อง Deno เพิ่มเติม แวะไปอ่าน SiamCafe Blog ได้นะ
แน่นอนว่า Fresh ไม่ใช่ framework เดียวในโลกนี้ ยังมีทางเลือกอื่นๆ อีกมากมาย เช่น React, Vue, Angular, Next.js, Remix, SvelteKit แต่ละตัวก็มีข้อดีข้อเสียต่างกันไป
ผมจะเปรียบเทียบ Fresh กับ Next.js ซึ่งเป็น framework ที่ฮิตมากๆ ในปัจจุบันให้ดูนะ
| คุณสมบัติ | Fresh | Next.js |
|---|---|---|
| Runtime | Deno | Node.js |
| Architecture | Island Architecture (เน้น SSR) | Hybrid (SSR, SSG, CSR) |
| JavaScript Client | น้อยมาก (Preact เป็น Default) | เยอะ (React) |
| Performance | เร็วมาก (เน้น SSR) | เร็ว (แต่ต้อง optimize ดีๆ) |
| Complexity | ง่าย | ซับซ้อนกว่า |
| SEO | ดีมาก | ดี |
| เหมาะกับ | เว็บ content, e-commerce, blog | เว็บ application, SPA |
สรุปง่ายๆ คือ Fresh เหมาะกับเว็บที่เน้น content และ performance ส่วน Next.js เหมาะกับเว็บ application ที่ต้องการความยืดหยุ่นสูง
ถ้าอยากรู้เรื่องอื่นๆ เพิ่มเติม ลองไปดูที่ SiamCafe Blog สิ มีบทความดีๆ อีกเยอะเลย
เอาล่ะน้องๆ มาถึงตรงนี้แล้ว แสดงว่าเริ่มสนใจ Deno กับ Fresh กันจริงๆ จังๆ แล้วสินะ สมัยผมทำร้านเน็ต SiamCafe เมื่อ 20 กว่าปีก่อน เรื่องพวก Framework นี่ไม่มีหรอก เขียนเว็บด้วย Notepad ล้วนๆ (หัวเราะ) แต่ยุคสมัยมันเปลี่ยนไป เราก็ต้องปรับตัวตาม
สิ่งที่ผมอยากจะเน้นย้ำจากประสบการณ์ที่คลุกคลีกับ IT มา 28+ ปี คือ อย่ามองข้ามเรื่องพื้นฐาน! ไม่ว่า Framework จะเทพแค่ไหน ถ้าพื้นฐานเราไม่แน่น ก็ไปต่อยากครับ
เหมือนสร้างบ้านน่ะครับ ถ้าฐานรากไม่แข็งแรง ต่อให้มีวัสดุดีแค่ไหน บ้านก็พังอยู่ดี
1. เข้าใจ Component Lifecycle: Fresh มัน based on Preact ซึ่งมี Component Lifecycle ของมัน (เหมือน React นั่นแหละ) ถ้าเราไม่เข้าใจว่า Component มัน mount ตอนไหน, update ตอนไหน, unmount ตอนไหน... code เราก็จะรวนได้ง่ายๆ
2. ใช้ Deno's Built-in Tools ให้เป็นประโยชน์: Deno มันมาพร้อม formatter (`deno fmt`), linter (`deno lint`), และ test runner (`deno test`) ใช้พวกนี้ให้เป็นนิสัย! ช่วยให้ code เรา clean และ maintainable มากขึ้นเยอะ
deno fmt
deno lint
deno test
3. Server-Side Rendering (SSR) คือหัวใจ: Fresh มันเน้น SSR นะน้องๆ พยายามใช้ประโยชน์จากมันให้เต็มที่ อย่าเอาแต่ client-side rendering อย่างเดียว การ SSR ช่วยให้เว็บเรา SEO ดีขึ้น และโหลดเร็วขึ้นด้วย
4. Debugging is your friend: เจอ error อย่าเพิ่ง panic! Deno มี debugger มาให้ใช้ (ผ่าน VS Code หรือ IDE อื่นๆ) หัดใช้ debugger ให้คล่อง จะช่วยให้แก้ปัญหาได้เร็วขึ้นเยอะ
สมัยผมทำร้านเน็ต เวลามีปัญหา ผมจะเริ่มจากการ print ค่าต่างๆ ออกมาดู (console.log นั่นแหละ) แต่นั่นมันยุคโบราณ! ยุคนี้เรามีเครื่องมือดีๆ เยอะแยะ ใช้ให้เป็นประโยชน์ครับ
Fresh เหมาะกับ project ที่ต้องการ performance สูง, SEO ดี, และ development experience ที่รวดเร็ว เช่น Blog, E-commerce, หรือ Website ที่เน้น content เป็นหลัก ถ้าเป็น Web App ที่ซับซ้อนมากๆ อาจจะต้องพิจารณา Framework อื่นๆ ที่มี ecosystem ใหญ่กว่า เช่น Next.js หรือ Remix
Deno ถูกออกแบบมาให้ปลอดภัยตั้งแต่แรก โดย default แล้ว Deno จะไม่มีสิทธิ์เข้าถึง file system, network, หรือ environment variables เลย เราต้อง grant permission ให้มันเอง นี่คือข้อดีของ Deno ที่ต่างจาก Node.js
Deno Deploy คือ platform ที่สร้างมาเพื่อ deploy Deno app โดยเฉพาะ แต่เราก็สามารถ deploy Fresh app บน platform อื่นๆ ได้เช่นกัน เช่น Netlify, Vercel, หรือ AWS (ต้อง configure นิดหน่อย)
Deno ไม่มี database driver มาให้ในตัว เราต้องใช้ third-party driver เอง มีให้เลือกหลายตัว เช่น Postgres, MySQL, MongoDB ลองเลือกที่เหมาะกับ project เราดู
Deno และ Fresh เป็น combination ที่น่าสนใจสำหรับคนที่อยากลองทำ web development แบบใหม่ๆ ด้วย Typescript สิ่งสำคัญคือต้องเข้าใจพื้นฐาน, เรียนรู้จาก documentation, และลองทำ project เล็กๆ ดูก่อน ค่อยๆ พัฒนาไปเรื่อยๆ
อย่าลืมว่าไม่มี Framework ไหนที่ perfect ที่สุด ทุกอย่างมีข้อดีข้อเสีย เลือกใช้ให้เหมาะกับ project ของเราครับ
สุดท้ายนี้ ขอฝาก iCafeForex ไว้ด้วยนะครับ เผื่อใครสนใจเรื่องการลงทุน
และอย่าลืมติดตาม SiamCafe Blog เพื่ออัพเดทเรื่อง IT และ Programming ใหม่ๆ นะครับ