INERTIAJS จัดการการจัดการสถานะในแอปพลิเคชันหน้าเดียว (SPAS) ผ่านวิธีการที่ไม่ซ้ำกันซึ่งผสมผสานการกำหนดเส้นทางฝั่งเซิร์ฟเวอร์เข้ากับการเรนเดอร์ฝั่งไคลเอ็นต์ไม่จำเป็นต้องใช้ระบบการจัดการสถานะฝั่งไคลเอ็นต์แยกต่างหากในสปาดั้งเดิมที่สร้างขึ้นด้วยเฟรมเวิร์กเช่น React หรือ Vue เพียงอย่างเดียว นี่คือคำอธิบายที่ครอบคลุมเกี่ยวกับความเฉื่อยจัดการกับรัฐรักษาการตอบสนองและการเปลี่ยนผ่านที่ราบรื่นในบริบทของสปา:
INERTIAJS ทำหน้าที่เป็นไลบรารีการกำหนดเส้นทางฝั่งไคลเอ็นต์ที่อนุญาตให้เข้าชมหน้าโดยไม่ต้องโหลดหน้าเต็ม แทนที่จะใช้เบราว์เซอร์ที่ดึงหน้า HTML ที่สมบูรณ์ในแต่ละการนำทางให้ใช้การคลิกลิงก์ความเฉื่อยและดึงคำตอบ JSON จากเซิร์ฟเวอร์ คำตอบเหล่านี้มีชื่อองค์ประกอบหน้าพร้อมกับข้อมูลสถานะของหน้า (อุปกรณ์ประกอบฉาก) วิธีการที่ขับเคลื่อนด้วยข้อมูลนี้หมายความว่าเซิร์ฟเวอร์จะควบคุมสถานะหรือข้อมูลที่ส่งไปยังไคลเอนต์สำหรับแต่ละหน้าซึ่งความเฉื่อยนั้นใช้เพื่อแสดงผลแบบไดนามิกและอัปเดตเฉพาะส่วนที่จำเป็นของอินเตอร์เฟสเท่านั้น
กลไกการจัดการสถานะหลักหมุนรอบการถือ "วัตถุหน้า" ปัจจุบันซึ่งรวมถึงองค์ประกอบที่จะแสดงผลและอุปกรณ์ประกอบฉากที่จะส่งผ่านไป เซิร์ฟเวอร์สร้างวัตถุหน้านี้ด้วยข้อมูลสถานะที่เกี่ยวข้องสำหรับเส้นทางที่กำหนด เมื่อการนำทางเกิดขึ้นความเฉื่อยดำเนินการคำขอ XHR (AJAX) แทนที่จะโหลดหน้าเต็ม ได้รับวัตถุหน้าใหม่เปรียบเทียบกับวัตถุปัจจุบันและอัปเดตส่วนหน้าโดยการสลับส่วนประกอบและอุปกรณ์ประกอบฉากตามที่ไม่สูญเสียสถานะก่อนหน้านี้ตามความเหมาะสม
สำหรับการรักษาสถานะในการนำทางหรือในกรณีเช่นการเก็บข้อมูลแบบฟอร์มอินพุต Inertia มีคุณสมบัติที่เรียกว่า `useremember ' ยูทิลิตี้นี้จะช่วยประหยัดสถานะส่วนประกอบ (มักจะเป็นสถานะสถานะ) ไปยังสถานะประวัติของเบราว์เซอร์ช่วยให้ผู้ใช้สามารถนำทางออกไปและกลับมาโดยไม่สูญเสียการป้อนข้อมูล `useremember` สามารถนำไปใช้กับวัตถุข้อมูลใด ๆ และโดยการให้คีย์ที่ไม่ซ้ำกันความเฉื่อยรู้ว่าสถานะใดที่บันทึกไว้เพื่อกู้คืนเมื่อผู้ใช้กลับมาทบทวนหน้าหรือส่วนประกอบนั้น สิ่งนี้เลียนแบบพฤติกรรมของสถานะลูกค้าเท่านั้น แต่จัดการผ่านวงจรชีวิตการนำทางของสปา
เมื่อจัดการกับแบบฟอร์มความเฉื่อยเสนอตัวช่วยฟอร์มที่ได้รับการปรับปรุง `useform` ที่ไม่เพียง แต่จัดการสถานะของฟอร์มเท่านั้น แต่ยังจำสถานะระหว่างการเข้าชมหน้าเว็บโดยอัตโนมัติ ซึ่งหมายความว่าผู้ใช้จะไม่สูญเสียข้อมูลแบบฟอร์มในการนำทางการปรับปรุง UX โดยไม่ต้องใช้โซลูชันสถานะฝั่งไคลเอ็นต์ที่ซับซ้อน
Inertia ยังรองรับการแบ่งปันข้อมูลทั่วโลกผ่านหน้าเว็บโดยใช้อุปกรณ์ประกอบฉากที่ใช้ร่วมกันผ่านเซิร์ฟเวอร์ในทุกคำขอ ซึ่งรวมถึงข้อมูลเช่นสถานะการรับรองความถูกต้องข้อมูลผู้ใช้หรือข้อความแฟลช อุปกรณ์ประกอบฉากที่ใช้ร่วมกันเหล่านี้จะถูกรวมเข้ากับอุปกรณ์ประกอบฉากของส่วนประกอบทุกหน้าโดยอัตโนมัติเพื่อให้มั่นใจว่าสถานะส่วนกลางที่สอดคล้องกันทั่วทั้งแอปโดยไม่ต้องจัดการด้วยตนเองเพิ่มเติม
โปรโตคอลความเฉื่อยที่ใช้ยังมีคุณสมบัติการกำหนดเวอร์ชันเพื่อจัดการการซิงโครไนซ์ไคลเอนต์และเซิร์ฟเวอร์การหลีกเลี่ยงสถานะที่ไม่ตรงกันของรัฐที่เกิดจากไฟล์ stale javascript หรือไฟล์ CSS เมื่อเซิร์ฟเวอร์ตรวจพบการเปลี่ยนแปลงเวอร์ชันจะบังคับให้โหลดแบบเต็มหน้าเพื่อรีเซ็ตสถานะแอพและโหลดสินทรัพย์ล่าสุด
เนื่องจากสถานะของ Inertia นั้นถูกรวมเข้ากับเส้นทางและตัวควบคุมฝั่งเซิร์ฟเวอร์อย่างแน่นหนาจึงสนับสนุนรูปแบบการใช้งานที่ตรรกะของเซิร์ฟเวอร์กำหนดความพร้อมใช้งานของข้อมูลและส่วนหน้าใช้ข้อมูลที่ประกาศอย่างชัดเจน ดังนั้นความซับซ้อนของการจัดการสถานะส่วนใหญ่ที่มีอยู่ในสปาที่มีลูกค้าหนักเช่นการจัดการข้อมูลแบบอะซิงโครนัสและการซิงโครไนซ์จะถูกถ่ายไปยังเฟรมเวิร์กฝั่งเซิร์ฟเวอร์ สิ่งนี้นำไปสู่รหัสไคลเอ็นต์ที่ง่ายขึ้นและมีแผ่นหม้อไอน้ำน้อยลงรอบ ๆ การซิงค์สถานะ
โดยสรุป Inertiajs จัดการสถานะในสปาโดย:
- การใช้วัตถุหน้า JSON ที่ส่งจากเส้นทางเซิร์ฟเวอร์เพื่อแสดงสถานะหน้าปัจจุบัน
- การสกัดกั้นการนำทางเพื่อดึงข้อมูล JSON น้อยที่สุดแทนที่จะเป็นหน้า HTML แบบเต็ม
- การแสดงผลส่วนประกอบฝั่งไคลเอ็นต์ที่เหมาะสมแบบไดนามิกด้วยอุปกรณ์ประกอบฉากในการเปลี่ยนแปลงเส้นทางแต่ละเส้นทาง
- ให้ `useremember` เพื่อคงสถานะส่วนประกอบข้ามการนำทางผ่านประวัติเบราว์เซอร์
- การใช้ผู้ช่วยแบบฟอร์มพิเศษ (`useform`) เพื่อจัดการและจดจำสถานะของฟอร์ม
- การอนุญาตให้ใช้ข้อมูลเซิร์ฟเวอร์ที่ใช้ร่วมกัน (อุปกรณ์ประกอบฉากที่ใช้ร่วมกัน) สำหรับสถานะทั่วโลกที่สอดคล้องกันตลอดสปา
- การจัดการเวอร์ชันสินทรัพย์เพื่อให้ไคลเอนต์และเซิร์ฟเวอร์ซิงค์กันรักษาความสมบูรณ์ของสถานะแอพ
- การขนถ่ายธุรกิจและตรรกะข้อมูลไปทางฝั่งเซิร์ฟเวอร์ลดความซับซ้อนฝั่งไคลเอ็นต์ให้น้อยที่สุด