Struttura di front-end del progetto Django su larga scala [chiuso]

6

Pochi giorni fa, ho iniziato a lavorare in una nuova azienda. Prima di me, tutti i codici front-end e back-end sono stati scritti da un solo uomo.

Come sai, l'app Django contiene due directory principali per front-end: / statico - per file (pubblici) statici e / templates - per i modelli di Django

Ora abbiamo una grande applicazione con più di 10 diversi moduli come: home, admin, spanel, mobile ecc.

Questa è la struttura corrente di file e directory:

FIRST - / directory statica. Come puoi vedere, sono le directory miste con alcuni moduli con nome, alcuni con librerie globali.

unaltro:

SECOND - / templates directory. Alcune directory denominate come modulo con modelli misti, alcuni dipende dalla nuova versione =), alcuni utilizzati solo nel modulo, ma collocati globalmente.

ealtro:

Penso che questa sia una struttura brutta, non manutenibile, put-in-stress!

Dopo un po 'di tempo, suggerisco di usare questo schema, basato sulla struttura del modulo.

Per prima cosa, abbiamo le directory di versione, utilizzate per salvare il backup completo del progetto, include: / directory DEPRECATED - per vecchi file non utilizzati e / CURRENT (Active) directory, che contiene
versione di produzione del progetto.

Penso sia giusto, perché possiamo accedere a file di versioni precedenti o più recenti in modo facile e veloce. Inoltre, siamo salvati da dipendenze rotte o errate tra diverse versioni.

In secondo luogo, in ogni versione abbiamo moduli standalone e modulo globale.

Ogni modulo contiene le proprie directory / static e / templates. Questa struttura utilizzata per evitare dipendenze errate o errate tra diversi moduli, perché ogni modulo ha la propria app js, tabelle CSS e immagini locali.

Il modulo globale contiene tutte le librerie, i fogli di stile principali e le immagini come i loghi o le favicon.

Penso che questa struttura sia molto meglio da mantenere, aggiornare, refactoring ecc.

La mia domanda è:

Come pensi, questo schema è migliore di quello attuale? Questo schema può essere pubblicato o non è possibile implementarlo nell'app Django?

    
posta Saike 04.02.2014 - 19:33
fonte

4 risposte

2

Per "modulo", intendi app? Django ha già una struttura abbastanza standard per dove posizionare i file.

Ti suggerisco di prendere in considerazione l'utilizzo di quella struttura. Per prima cosa, quasi tutti gli aiuti che otterrai avranno esempi con questa struttura.

Per quanto riguarda la tua struttura, mi sembra abbastanza estesa. Dipende da te, però. In particolare, se si adatta al problema aziendale, non avrai problemi a spostarlo.

    
risposta data 31.07.2014 - 23:19
fonte
2

I punti che mi sembrano brutti:

  1. Perché non un Sistema di controllo versione ? Mantenere le versioni sul file system locale non è carino. È possibile utilizzare i sistemi di controllo delle versioni e aggiungere anche librerie javascript / css di terze parti in modo da aggiungere / rimuovere / sostituire i file javascript e css che potranno essere monitorati. Vai avanti o indietro tra le revisioni e controlla facilmente le differenze.
  2. È difficile sviluppare un software i cui moduli necessitino di versioni diverse dello stesso software di terze parti. Se il tuo modulo admin ha bisogno di jQuery X while Il modulo prodotti ha bisogno di jQuery Y , quindi hai problemi. È difficile da mantenere e solo tu sai chi è il motivo per cui ogni modulo richiede una versione specifica di jQuery X e perché non può essere eseguito con jQuery Y . Dato che hai una copia completa di ogni distribuzione sul tuo disco locale, probabilmente non ricorderai perché A module ha bisogno di una specifica versione di bootstrap. Per i diversi file js / css che sono specifici per un singolo modulo, è possibile creare una directory statica sotto ciascuna applicazione e inserire qui file specifici dell'applicazione. Vedi questo post come riferimento
  3. Django ha una struttura modello ben pianificata. Puoi fare lo stesso come hai fatto con i file statici. Puoi avere la cartella templates sotto ogni applicazione e trovare modelli specifici per l'applicazione qui.
  4. Avere le directory templates e static specifiche dell'applicazione dipende dallo sviluppatore. Se tutti i file nella stessa directory sono brutti, è possibile scegliere la soluzione specifica per l'applicazione. Django li gestirà bene entrambi. Soprattutto se hai molte applicazioni, potresti avere delle collusioni di nomi se tutti i tuoi modelli e file statici si trovano nella stessa directory.

La forma attuale è molto migliore di quella vecchia. Ma sono sicuro che potresti ottenere idee migliori se controlli i documenti di Django e controlli SO / programmatori per situazioni e soluzioni simili.

    
risposta data 16.09.2015 - 09:51
fonte
-2

Sì. È molto meglio di come è stato fatto in precedenza. Inoltre Django è anche lo strumento giusto per farlo. La ragione per la stessa cosa è, quando guardiamo la base del framework, cioè Django, questo caso è scritto in Python. Python crede più nella leggibilità piuttosto che nella scrittura del codice stesso.

Quindi, sì, le cose che hai fatto sono molto meglio in termini semplici

    
risposta data 18.04.2015 - 20:15
fonte
-2

Penso che sia una buona struttura, ma ti suggerisco di non utilizzare il modello django o una qualsiasi tecnologia di template lato server. Immagina che in futuro tu decida (o non tu, il tuo capo) di implementare alcuni servizi in altre tecnologie server rispetto a python / django (ruby / rails, symphony2, J2EE, .NET), in questo modo tutti i template html lato client non sono utilizzabile. Penso che sia una buona idea usare il template lato client come moustache.js e altri.

Controlla questo articolo: " link "

    
risposta data 08.03.2014 - 11:19
fonte