- เวลาพัฒนาเว็บด้วย Rust มีปัญหาตรงที่ไม่มีเฟรมเวิร์กแบบ Django จึงต้องลงมือทำหลายอย่างเอง
- หากต้องการใช้ประโยชน์จากจุดเด่นของ Rust อย่างระบบชนิดข้อมูล ประสิทธิภาพ และเวลาคอมไพล์ ก็จำเป็นต้องมีเฟรมเวิร์กที่ช่วยให้การพัฒนาเว็บง่ายขึ้น
ฟีเจอร์ที่จำเป็น
- การกำหนดเส้นทาง/แฮนด์เลอร์: ต้องมีความสามารถในการเชื่อมคำขอไปยังแฮนด์เลอร์ที่จะประมวลผล
- เทมเพลต: ต้องสามารถสร้างคอนเทนต์อย่าง HTML และ JSON ได้
- การให้บริการไฟล์สแตติก: ต้องมีฟังก์ชันสำหรับให้บริการแอสเซ็ตอย่างไฟล์ CSS
- การล็อกอิน: สำหรับแอปหลายผู้ใช้ จำเป็นต้องมีฟังก์ชันล็อกอิน
- การจัดการสิทธิ์: ต้องสามารถจัดการสิทธิ์การเข้าถึงตามผู้ใช้ได้
- อินเทอร์เฟซฐานข้อมูล: ต้องมีความสามารถในการจัดเก็บและจัดการข้อมูล
- เครื่องมือผู้ดูแลระบบ: ต้องมีเครื่องมือที่รองรับงานดูแลระบบพื้นฐาน
- WebSocket: ต้องมีฟังก์ชัน WebSocket สำหรับการส่งข้อมูลแบบเรียลไทม์
- ฮอตรีโหลด: ต้องมีความสามารถที่สะท้อนการเปลี่ยนแปลงโค้ดได้ทันที
ฟีเจอร์เพิ่มเติมที่จำเป็น
- งานเบื้องหลัง: ต้องมีความสามารถในการรันงานตามตารางเวลา
- การมอนิเตอร์/การสังเกตการณ์ระบบ: ต้องมีความสามารถในการมอนิเตอร์สถานะของระบบ
- แคช: ต้องมีฟังก์ชันแคชเพื่อเพิ่มประสิทธิภาพ
- อีเมลและการแจ้งเตือน: ต้องมีฟังก์ชันแจ้งเตือนเพื่อรองรับความสามารถอย่างการรีเซ็ตรหัสผ่าน
- เครื่องมือดีพลอย: ต้องมีวิธีดีพลอยที่สม่ำเสมอและเป็นแบบแผนเดียวกัน
- การบันเดิล CSS/JS: ต้องมีความสามารถในการจัดการไฟล์ CSS และ JS อย่างมีประสิทธิภาพ
ระบบนิเวศที่มีอยู่
- เว็บเฟรมเวิร์ก: มีเฟรมเวิร์กที่ให้ความสามารถขั้นพื้นฐานอย่าง actix-web และ axum
- ชุดไลบรารี: มีไลบรารีหลากหลายสำหรับเทมเพลต การล็อกอิน การจัดการสิทธิ์ เป็นต้น แต่ยังขาดโซลูชันแบบบูรณาการ
เว็บทูลคิตใหม่
- nicole's web toolkit (newt): กำลังพัฒนาเว็บทูลคิตที่รวมฟังก์ชันหลากหลายเข้าไว้ด้วยกัน
- เป้าหมาย: เพื่อช่วยให้เริ่มต้นเว็บแอปใหม่ได้อย่างรวดเร็ว
- แผนการ: ตั้งใจจะใช้ building blocks ที่มีอยู่เดิมเพื่อมอบโซลูชันแบบบูรณาการ
สรุปโดย GN⁺
- เน้นย้ำถึงความจำเป็นของเว็บเฟรมเวิร์กแบบบูรณาการเพื่อให้การพัฒนาเว็บด้วย Rust ง่ายขึ้น
- แนะนำความพยายามที่จะก้าวข้ามข้อจำกัดของเว็บเฟรมเวิร์กและไลบรารีที่มีอยู่
- ต้องการยกระดับประสบการณ์นักพัฒนาด้วยการรวมฟังก์ชันที่หลากหลายผ่าน nicole's web toolkit (newt)
- ความพยายามในการนำข้อดีของเฟรมเวิร์กแบบ Django เข้าสู่ระบบนิเวศของ Rust เป็นสิ่งที่น่าจับตามอง
- โปรเจ็กต์อื่นที่มีฟังก์ชันคล้ายกัน ได้แก่ actix-web และ axum
1 ความคิดเห็น
ความเห็นจาก Hacker News
เป็นความเห็นของคนที่ชอบสร้างสิ่งสนุก ๆ ด้วยความพยายามให้น้อยที่สุดโดยใช้ Rust โดยมองว่าแม้ Rust จะยอดเยี่ยมด้านประสิทธิภาพและการจัดการหน่วยความจำ แต่สำหรับการพัฒนาเว็บนั้น Go หรือ Django อาจเหมาะกว่า
มองว่า Rust มอบความปลอดภัยที่ช่วยให้นักพัฒนาทำผิดพลาดน้อยลง และยังมีข้อดีที่สามารถเขียนโค้ดได้แม้ใช้เครื่องมือง่าย ๆ อย่าง Notepad
มองว่าในฐานะเว็บเฟรมเวิร์ก Rocket คือเฟรมเวิร์กที่ดีที่สุดสำหรับ "นักพัฒนาขี้เกียจ"
มองว่าหากใช้ความสามารถด้าน pattern matching ของ Rust ก็ไม่จำเป็นต้องมี router และเรื่อง authentication ก็ไม่ใช่ปัญหาของภาษา或เฟรมเวิร์ก
มองว่าเครื่องมือ CSS/JS ไม่เหมาะกับ Rust frontend framework และ Rust ก็มีความพร้อมเพียงพอแล้วสำหรับเว็บฝั่งฟรอนต์เอนด์
รู้สึกประหลาดใจที่ไม่มีการพูดถึงเฟรมเวิร์ก Rocket โดยมองว่า Rocket มีเป้าหมายจะเป็นเฟรมเวิร์กแบบ "batteries included"
มองว่าการพัฒนาเว็บด้วย Rust ก็ใช้ได้ แต่มีปัญหาเรื่อง concurrency และการเลือก component library ก็ทำได้ยาก
กำลังใช้ Flutter เพื่อปรับปรุง UX และพอใจกับมันเพราะผสานรวมกับ Rust ได้ง่าย
มองว่า Flutter ไม่ให้ความสำคัญกับ DOM แต่ก็น่าสนใจเพราะช่วยให้สร้าง UX ที่นำไป deploy ได้ทุกที่อย่างง่ายดาย
มองว่า Poem คล้ายกับ FastAPI แต่ต้องใช้ boilerplate จำนวนมากในการตั้งค่าเริ่มต้น
มองว่าคำว่า 'ขี้เกียจ' ถูกใช้ในความหมายที่ต้องการให้เว็บเฟรมเวิร์กจัดการงานทั่วไปให้ แต่ในความเป็นจริงก็ยังต้องทำงานอีกมาก
มองว่าโปรเจ็กต์อย่าง loco-rs, poem และ rocket ต่างก็มอบประสบการณ์แบบ "batteries included" อยู่แล้ว และมี CLI คอยแนะนำการใช้งาน
มองว่า F# มอบ type system และเครื่องมือที่คล้ายกับ Rust แต่มีความซับซ้อนน้อยกว่าในด้าน async processing และการจัดการหน่วยความจำ
ผู้เขียนต้องการเฟรมเวิร์กสำหรับ Rust ที่คล้ายกับ Spring Boot