Dopo lunghi 3 mesi di dibattiti e ricerche nella scelta tra React (con Redux) e Angular 2, il team front-end della mia azienda ha concluso di andare con Angular 2 (dato che è più adatto al nostro problema).
Siamo nel business delle app aziendali, che attualmente comprende molte diverse tecnologie front-end (pur avendo l'intero backend RESTful), e volevamo sostituirle tutte e disporre di un'unica tecnologia per facilitare la formazione futura e il controllo di qualità.
Data la natura del nostro prodotto, è vasto e ci sono moduli all'interno, che sono di per sé un dominio diverso e possono essere realizzati come app standalone ma il prodotto stesso vive in un singolo URL.
Esempio;
Chiamiamo il mio prodotto come SuperApp.
Come interfaccia utente, SuperApp ha un sistema di accesso standard e navigazione verso moduli / sottoprodotti secondari, in modo che il flusso di lavoro appaia come segue.
SuperApp
- Utente autenticato
- Dimentica la procedura guidata per la password
- Pagina pubblica accessibile senza autent
Utente autenticato
Sistema di navigazione
- Casa
- Sotto-product1
- Sotto-product2
- Sotto-prodotto3
Profilo
...
...
gruppi
...
...
- Casa
Si noti che nella rappresentazione sopra, Sub-product1
e Sub-product2
sono due aree completamente diverse, con domini aziendali completamente diversi.
Quello che mi viene in mente in questo momento è che posso creare SuperApp come un singolo progetto Angular 2 con solo componenti e viste che sono rilevanti per se stesso, e SuperApp è anche responsabile del caricamento di più app figlio; Sub-product1
, Sub-product2
(di nuovo, diversi progetti Angular 2, con i propri package.json
, webpack
configurazione, ecc.) tramite componenti stupidi, e fungono da shell che fornisce il routing di livello superiore e un segnaposto per contenere quelle app figlio.
Una volta, Sub-product1
viene caricato all'interno della shell, aggiungerà le proprie rotte alla rotta corrente alla quale è arrivata SuperApp.
Il motivo per cui voglio la separazione è perché queste diverse app (che sono attualmente costruite utilizzando ExtJS) hanno team dedicati che ci lavorano (siamo un'azienda con oltre 500 sviluppatori), quindi se hanno i loro progetti angolari, possono gestire i loro strumenti e dipendenze a loro piacimento senza fare affidamento sull'app Grand Parent.
Ma non sono in grado di trovare da nessuna parte nei documenti angolari ufficiali o sul Web che se sia possibile avere app angolari nidificate (in modo tale che il codice del framework sia condiviso mentre le dipendenze delle app figlio sono completamente isolate e caricate solo quando l'app ne ha bisogno) o se esiste un approccio alternativo per risolvere tale problema.
Saranno apprezzate tutte le indicazioni o anche i collegamenti ad articoli pertinenti.