สมมติว่าฉันมีส่วนหน้าซึ่งส่วนใหญ่เป็นแอปพลิเคชันหน้าเดียวที่เขียนโดยใช้เชิงมุมเสียงฮึดฮัดและความโกลาหล และสมมติว่าฉันมีแบ็กเอนด์ซึ่งส่วนใหญ่เป็นเพียง REST API นั่งอยู่ด้านบนของ ORM ซึ่งเก็บ / ดึงวัตถุจากฐานข้อมูลโดยใช้สิ่งต่าง ๆ เช่นเสียงฮึดฮัดแสดงและต่อเนื่อง
แอปพลิเคชันเชิงมุมทำสิ่งที่เป็นภาพทั้งหมดที่ผู้ใช้เห็น แต่ทำได้ด้วยการเป็น GUI เหนือบริการที่จัดทำโดยแบ็คเอนด์
มันจะเป็นที่พึงปรารถนาที่จะแยกสิ่งเหล่านี้ออกเป็นสอง codebases ที่แตกต่างกันเพื่อให้เกิดการพัฒนาที่เป็นอิสระการกำหนดเวอร์ชันการรวมอย่างต่อเนื่องการผลักดันการพัฒนาเป็นต้น
คำถามของฉันคือมีวิธีการอะไรบ้างสำหรับการทำสิ่งนี้อย่างหมดจด? มีแนวทางปฏิบัติที่ดีที่สุดสำหรับจาวาสคริปต์แบบเต็มสแต็คหรือไม่?
ตัวเลือก # 1 ดูเหมือนจะเป็นหินใหญ่ก้อนเดียวเช่น "อย่าแยกพวกมันออก" โปรคือห่วงโซ่การสร้างนั้นง่ายและทุกอย่างอยู่ในที่แห่งเดียว - แต่ดูเหมือนจะมีข้อเสียมากมาย เวอร์ชันที่ยากขึ้นไปอีกส่วนด้านหน้าที่หักหมายถึงส่วนที่ไม่สามารถปรับใช้ได้และอื่น ๆ
ตัวเลือก # 2 ดูเหมือนจะเป็นแบบโมโนลิ ธ ที่ซึ่งฟลูเอ็นด์บิลด์ส่วนหน้ามีผลในการเขียนไฟล์จำนวนมากไปยังแบ็คเอนด์ dist
ไดเรกทอรีบน front-end จะอ้างถึงไดเรกทอรีบางอย่างเกี่ยวกับ back-end เพื่อเป็นหลักเมื่อ minifies ปลายด้านหน้า uglifies ฯลฯ ก็ลงท้ายเผยแพร่ไปยัง back-end ซึ่งจะทำงานทุกอย่าง
ตัวเลือก # 3 ดูเหมือนว่าจะมีการแยกเต็มรูปแบบ: front-end และ back-end แต่ละตัวใช้เซิร์ฟเวอร์ของตัวเองในพอร์ตที่แตกต่างกันและพวกเขาเป็นโครงการที่แยกจากกันอย่างสมบูรณ์ ข้อเสียเปรียบดูเหมือนว่าพวกเขาจำเป็นต้องกำหนดค่าให้รู้เกี่ยวกับพอร์ตของกันและกัน ส่วนแบ็คเอนด์จะต้องอนุญาตให้ CORS จากส่วนหน้าและส่วนหน้าจำเป็นต้องทราบว่าจุดปลายเหล่านั้นจะต้องอยู่ที่ไหน
ตัวเลือก # 4 อาจใช้บางสิ่งบางอย่างเช่นนักเทียบท่าเพื่อประกอบเข้าด้วยกัน
ฉันแน่ใจว่ามีตัวเลือกอื่น ๆ แนวปฏิบัติที่ดีที่สุดที่แนะนำคืออะไร