ฉันใกล้จะสิ้นสุดการสร้างต้นแบบ / พิสูจน์เฟสแนวคิดสำหรับโครงการด้านที่ฉันกำลังทำงานและพยายามตัดสินใจเกี่ยวกับการตัดสินใจออกแบบแอปพลิเคชันขนาดใหญ่ขึ้น แอพนี้เป็นระบบการจัดการโครงการที่ปรับให้เข้ากับกระบวนการพัฒนาที่คล่องตัวยิ่งขึ้น หนึ่งในการตัดสินใจที่ฉันต้องทำคือเลือกว่าจะใช้แอปพลิเคชั่นหลายหน้าแบบดั้งเดิมหรือแอปพลิเคชันหน้าเดียว
ปัจจุบันต้นแบบของฉันคือการตั้งค่าแบบหลายหน้าแบบดั้งเดิม แต่ฉันได้ดู backbone.js เพื่อล้างข้อมูลและใช้โครงสร้างบางอย่างกับโค้ด Javascript (jQuery) ของฉัน ดูเหมือนว่าในขณะที่ backbone.js สามารถใช้ในแอปพลิเคชันแบบหลายหน้าได้ ฉันกำลังพยายามหารายการข้อดีและข้อเสียของการใช้วิธีการออกแบบแอปพลิเคชันหน้าเดียว จนถึงตอนนี้ฉันมี:
ข้อดี
ข้อมูลทั้งหมดจะต้องพร้อมใช้งานผ่าน API บางประเภท - นี่เป็นข้อได้เปรียบที่ยิ่งใหญ่สำหรับกรณีการใช้งานของฉันเนื่องจากฉันต้องการมี API สำหรับแอปพลิเคชันของฉันอยู่ดี ตอนนี้ประมาณ 60-70% ของการโทรของฉันเพื่อรับ / อัปเดตข้อมูลจะกระทำผ่าน REST API การใช้แอปพลิเคชันหน้าเดียวจะทำให้ฉันทดสอบ REST API ของฉันได้ดีขึ้นเนื่องจากแอปพลิเคชันนั้นจะใช้งาน นอกจากนี้ยังหมายความว่าเมื่อแอปพลิเคชันเติบโตขึ้น API ของตัวเองจะเพิ่มขึ้นเนื่องจากเป็นสิ่งที่แอปพลิเคชันใช้ ไม่จำเป็นต้องเก็บรักษา API ไว้เป็นส่วนเสริมของแอปพลิเคชัน
แอปพลิเคชันที่ตอบสนองได้ดีขึ้น - เนื่องจากข้อมูลทั้งหมดที่โหลดหลังจากหน้าเริ่มต้นถูกเก็บไว้ในระดับต่ำสุดและส่งในรูปแบบกะทัดรัด (เช่น JSON) การร้องขอข้อมูลโดยทั่วไปควรจะเร็วกว่าและเซิร์ฟเวอร์จะประมวลผลน้อยลงเล็กน้อย
ข้อเสีย
- การทำสำเนารหัส - ตัวอย่างเช่นรหัสรุ่น ฉันจะต้องสร้างแบบจำลองทั้งในฝั่งเซิร์ฟเวอร์ (PHP ในกรณีนี้) และฝั่งไคลเอ็นต์ใน Javascript
- ตรรกะทางธุรกิจใน Javascript - ฉันไม่สามารถให้ตัวอย่างที่เป็นรูปธรรมว่าทำไมเรื่องนี้ถึงไม่ดี แต่มันก็ไม่เหมาะสมที่ฉันจะมีตรรกะทางธุรกิจใน Javascript ที่ทุกคนสามารถอ่านได้
- การรั่วไหลของหน่วยความจำ Javascript - เนื่องจากหน้าเว็บไม่เคยโหลดซ้ำการรั่วไหลของหน่วยความจำ Javascript อาจเกิดขึ้นได้และฉันก็ไม่รู้ด้วยซ้ำว่าจะเริ่มแก้ไขข้อบกพร่องเหล่านั้นได้ที่ไหน
นอกจากนี้ยังมีสิ่งอื่น ๆ ที่เป็นดาบสองคม ตัวอย่างเช่นด้วยแอปพลิเคชันหน้าเดียวข้อมูลที่ประมวลผลสำหรับแต่ละคำขออาจน้อยลงมากเนื่องจากแอปพลิเคชันจะขอข้อมูลขั้นต่ำที่จำเป็นสำหรับคำขอเฉพาะอย่างไรก็ตามมันก็หมายความว่าอาจมีคำขอขนาดเล็กมากขึ้น เซิฟเวอร์. ฉันไม่แน่ใจว่าเป็นสิ่งที่ดีหรือไม่ดี
ข้อดีและข้อเสียของแอปพลิเคชันหน้าเว็บเดียวที่ฉันควรระลึกไว้เสมอเมื่อตัดสินใจว่าควรใช้วิธีใดในโครงการของฉัน