Contesto:
Recentemente ho aderito a una nuova società in cui hanno una struttura di cartelle particolare nel progetto in cui hanno moduli diversi in diverse cartelle in un singolo progetto. Ogni cartella del modulo ha un sottomodulo separato e quindi separa cartelle secondarie per codice back-end (in Python
) e front-end (in AngularJS
). Gli sviluppatori separati sono responsabili per diversi moduli. È mia responsabilità ora rendere questo codice modulare.
Ho suggerito due soluzioni:
-
con il repository git separato per il codice front-end e back-end
-
mantieni ciascun modulo in un repository separato. La maggior parte del codice back-end restituisce la risposta JSON e non il codice HTML, quindi il front-end utilizza principalmente le chiamate Ajax per connettersi con il back-end.
Il secondo è stato approvato.
Quindi creerò un repository git separato per il modulo separato e tenterò anche di creare un semplice script di gestore pacchetti in Node.js
per scaricare il codice in base al tag git menzionato in config.json
per creare la stessa struttura di cartelle in un singolo progetto, un po 'come in che modo Bower fa le cose. Solo i moduli che verranno modificati dallo sviluppatore possono essere messi nella configurazione per ignorare il download e lo sviluppatore invece può utilizzare git submodule
per apportare modifiche in quel particolare modulo in modo che possano utilizzare i comandi git
sul modulo ( Commit
, pull
e push
). Questo viene fatto in modo che nessuno sviluppatore possa modificare il codice di altri moduli e in modo tale da poter gestire correttamente il codice facendoli in un repository separato.
Struttura cartelle corrente:
Project Root
|-app
|-common (Code used by all the modules)
| |-js
| |-py
|-modules
| |-module1
| | |-submodule1
| | | |-js
| | | |-py
| | |-submodule2
| | | |-js
| | | |-py
| | ...
| |-module2
| | |-submodule1
| | | |-js
| | | |-py
| | ...
| ...
Domande:
Quindi la mia domanda è, principalmente, come fanno le altre aziende a modulare i loro progetti, in particolare quando sia il back-end sia il codice front-end sono nello stesso modulo. Si raccomanda di avere moduli nel repository separato? ( Già risposto dal link fornito da gnat )
Inoltre è buona pratica avere back-end e front-end insieme? In breve, sto facendo le cose nel modo giusto o no, per rendere modulare il progetto scrivendo uno script personalizzato?
Stack corrente (nel caso sia richiesto):
Back End - WebApp2 con Python
Front End - AngularJS
Piattaforma cloud - Google App Engine SE
HTML Templating Engine - Jade
CSS Templating Engine - Stylus
Task Runner - Gulp (Avevamo un grugnito lì, ma di recente l'ho cambiato in gulp)