หลังจากการอภิปรายและการวิจัยนาน 3 เดือนในการเลือกระหว่าง React (กับ Redux) และ Angular 2 ทีม front-end ใน บริษัท ของฉันได้สรุปว่าจะไปกับ Angular 2 (เนื่องจากมันเหมาะสมกับปัญหาของเรามากขึ้น)
เราเข้าสู่ธุรกิจแอพระดับองค์กรซึ่งปัจจุบันประกอบด้วยเทคโนโลยี Front-End ที่แตกต่างกันมากมาย (ในขณะที่มีแบ็กเอนด์ RESTful ทั้งหมด) และเราต้องการแทนที่ทั้งหมดและมีเทคโนโลยีเดียวที่จะทำให้การฝึกอบรมและการควบคุมคุณภาพในอนาคตง่ายขึ้น
ด้วยลักษณะของผลิตภัณฑ์ของเรามันมีมากมายและมีโมดูลอยู่ภายในซึ่งอยู่ในโดเมนอื่นและสามารถทำเป็นแอพแบบสแตนด์อโลนได้ แต่ตัวผลิตภัณฑ์นั้นใช้ URL เดียว
ตัวอย่าง;
เรียกผลิตภัณฑ์ของฉันเป็น SuperApp
ในฐานะที่เป็น UI นั้น SuperApp มีระบบเข้าสู่ระบบมาตรฐานและการนำทางไปยังโมดูลย่อย / ผลิตภัณฑ์ย่อยเช่นเวิร์กโฟลว์ปรากฏดังต่อไปนี้
SuperApp
- ตรวจสอบผู้ใช้
- ลืมรหัสผ่านของวิซาร์ด
- เข้าถึงหน้าสาธารณะโดยไม่ต้องตรวจสอบสิทธิ์
ผู้ใช้รับรองความถูกต้อง
ระบบนำทาง
- บ้าน
- Sub-Product1
- Sub-Product2
- Sub-Product3
ข้อมูลส่วนตัว
...
...
กลุ่ม
...
...
- บ้าน
โปรดทราบว่าในการแสดงข้างต้นSub-product1
และSub-product2
เป็นสองพื้นที่ที่แตกต่างกันโดยสิ้นเชิงมีโดเมนธุรกิจที่แตกต่างกันโดยสิ้นเชิง
สิ่งที่ฉันคิดได้ในตอนนี้คือฉันสามารถสร้างSuperAppเป็นโครงการ Angular 2 เดียวที่มีเฉพาะส่วนประกอบและมุมมองที่เกี่ยวข้องกับตัวเองเท่านั้นและ SuperApp ยังรับผิดชอบการโหลดแอปลูกหลายรายการ Sub-product1
, Sub-product2
(อีกครั้ง, โครงการ Angular 2 ที่แตกต่างกัน, มีของตัวเองpackage.json
, ตั้งค่าwebpack
, ฯลฯ ) ผ่านคอมโพเนนต์ที่โง่เง่าและทำหน้าที่เป็นเชลล์ซึ่งมีการจัดเส้นทางระดับสูงสุดและตัวยึดตำแหน่งเพื่อเก็บแอปลูกเหล่านั้น
เมื่อSub-product1
โหลดภายในเชลล์แล้วมันจะต่อท้ายเส้นทางของตัวเองไปยังเส้นทางปัจจุบันที่ SuperApp ลงจอด
เหตุผลที่ฉันต้องการแยกเพราะแอพต่าง ๆ เหล่านี้ (ซึ่งปัจจุบันสร้างขึ้นโดยใช้ ExtJS) มีทีมงานที่ทุ่มเท (เราเป็น บริษัท ที่มีนักพัฒนา 500+) ดังนั้นหากพวกเขามีโครงการแองกูลาร์ของตนเองพวกเขาสามารถจัดการเครื่องมือของพวกเขา และขึ้นอยู่กับความชอบของพวกเขาโดยไม่ต้องพึ่งพาแอปผู้ปกครองที่ยิ่งใหญ่
แต่ฉันไม่พบที่ใดก็ได้ในเอกสารเชิงมุมอย่างเป็นทางการหรือบนเว็บว่ามีแอพเชิงมุมซ้อนกันอยู่หรือไม่ (ในลักษณะที่รหัสเฟรมเวิร์กนั้นถูกแชร์ในขณะที่การพึ่งพาแอพย่อยของเด็ก ๆ ต้องการ) หรือไม่ว่ามีวิธีอื่นใดในการแก้ปัญหาดังกล่าว
คำแนะนำใด ๆ หรือแม้กระทั่งการเชื่อมโยงไปยังบทความที่เกี่ยวข้องจะได้รับการชื่นชม