3 คะแนน โดย dopeflamingo 28 일 전 | ยังไม่มีความคิดเห็น | แชร์ทาง WhatsApp

สวัสดีครับ

เมื่อราว 3 เดือนก่อน ผมคือ Engineer ที่เคยแนะนำเฟรมเวิร์กเว็บ Python ชื่อ 'Violit' ซึ่งทำขึ้นเป็นงานอดิเรกบน GeekNews เพื่อแก้ปัญหาคอขวดจาก การรันใหม่ทั้งแอป (Full Rerun) ของ Streamlit

ต้องขอขอบคุณเป็นอย่างมากที่ได้รับฟีดแบ็กดี ๆ จากทั้งคอมมูนิตี้ต่างประเทศและที่นี่บน GeekNews จนล่าสุด GitHub Star ก็ทะลุ 400 ไปแล้ว ระหว่างที่ผมได้เฝ้าดูเพื่อนร่วมงานและผู้ใช้ทั่วโลกนำเฟรมเวิร์กนี้ไปใช้กับโปรเจกต์จริง ผมก็ได้ตระหนักถึงเรื่องหนึ่งขึ้นมาครับ

นั่นคือ พอสร้าง UI ได้อย่างรวดเร็วแล้ว คนก็มักจะมองหาฟีเจอร์บันทึกลง DB และระบบล็อกอิน (Auth) ต่อทันที

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

ผ่านการอัปเดตครั้งใหญ่นี้ Violit ได้ขยายจากเครื่องมือ UI ธรรมดาไปเป็น เฟรมเวิร์กฟูลสแตกแบบ Batteries-included

🚀 จุดสำคัญของอัปเดตครั้งนี้

  • มี ORM ในตัว (SQLModel): เพียงส่ง vl.App(db="./app.db") บรรทัดเดียว ก็สามารถ query และบันทึกข้อมูลได้ทันทีโดยไม่ต้องตั้งค่าเพิ่มเติม
  • มี Auth ในตัว: รองรับการยืนยันตัวตนแบบ session-based, การแฮ็ชรหัสผ่าน และการป้องกันสิทธิ์เข้าถึงหน้าแบบ Role-based ได้แบบเนทีฟ
  • งานเบื้องหลังแบบอะซิงก์: เมื่อต้องรัน AI inference ที่หนัก ๆ เพื่อไม่ให้หน้าจอค้าง สามารถส่งงานไปทำในเบื้องหลังได้อย่างปลอดภัยผ่าน app.background()
  • Tailwind & Web Awesome: ผ่านพารามิเตอร์ cls ทำให้ใช้ utility class ของ Tailwind ได้โดยตรง และสามารถทำสไตลิ่งสมัยใหม่ได้ง่ายขึ้น

แน่นอนว่าเอนจินแกนหลักอย่าง reactivity แบบละเอียดที่อิงสัญญาณ (Signal-based fine-grained reactivity) ก็แข็งแรงยิ่งขึ้นเช่นกัน แม้จะเขียนโค้ดในรูปแบบสคริปต์ที่เข้าใจง่ายแบบเดียวกับ Streamlit (API เข้ากันได้ 90%) แต่เวลาคลิกหรือป้อนข้อมูล ระบบจะไม่รีเฟรชทั้งหน้าจอ แต่จะอัปเดตเฉพาะวิดเจ็ตที่มี dependency เกี่ยวข้องเท่านั้น

ตอนนี้คุณสามารถจัดการได้ครบตั้งแต่ UI แบบ responsive สมัยใหม่ ไปจนถึงฐานข้อมูลและการยืนยันตัวตนผู้ใช้ ด้วย Python script เพียงไฟล์เดียว

ถ้าครั้งหน้าคุณจะทำเครื่องมือใช้ภายใน, data app หรือ MVP ลองนำไปใช้ดูสักครั้งนะครับ และหากฝากฟีดแบ็กหรือคำแนะนำด้านสถาปัตยกรรมไว้ให้ จะขอบคุณมากจริง ๆ ครับ! :)

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น