Django vs Laravel: framework a confronto
Come abbiamo visto nell’articolo Python vs PHP quando si sviluppa un progetto web è possibile intraprendere tante strade. Una volta scelto il linguaggio di programmazione e impostato un server, è molto semplice aprire un file vuoto e iniziare a pubblicare qualcosa.
Immaginiamo di voler sviluppare un sito web. In PHP ad esempio, basta avere un server Apache che punta alla cartella giusta e un semplice file “index.php” per fargli stampare un messaggio. Se riducessimo un sito internet all’osso non sarebbe nient’altro che questo.
Ma il passo da questo approccio a un sito robusto e sicuro è grande. Occorrerebbe implementare numerose funzionalità: dei controlli per validare i dati inviati dagli utenti, del middleware che gestisca il carico massimo di risorse, un sistema di segnalazione degli errori e debugging e molto altro ancora.
Per fortuna vengono in nostro soccorso i framework. In questo caso ci ritroviamo con una cassetta degli attrezzi sviluppata da persone esperte, impiegata e testata da migliaia di programmatori in tutto il mondo. In questo modo abbiamo la sicurezza di sapere che lo strumento che stiamo utilizzando è stato messo alla prova, sforzato, e a volte anche rotto e conseguentemente riparato e migliorato da altre persone. Il team di sviluppo lavora virtualmente insieme a tutte queste altre persone che hanno contribuito al framework che sta utilizzando. Solitamente viene fornita una documentazione estesa, che permette al team di conoscere a fondo tutti gli strumenti e le possibilità che vengono messe a disposizione dal framework.
Django è uno dei principali framework di riferimento per il mondo Python, mentre Laravel lo è per PHP. Ne esistono molti altri, come ad esempio Flask o Pylons per Python, oppure Symfony, Cake per PHP, ma in SocialCities abbiamo scelto i primi due per maturità, esaustività della documentazione, supporto della community, estensibilità.
Consideriamo Django e Laravel come maturi perché sono in circolazione rispettivamente dal 2005 e dal 2011 e soddisfano molto più che i minimi requisiti di sicurezza e usabilità. Basta dare un’occhiata alla tavola dei contenuti di Django o di Laravel per avere un’idea di quanto vasti siano questi strumenti e quante informazioni contengano le loro documentazioni. Community specializzate come Laracasts, o più generiche come StackOverflow, forniscono al team sviluppo una rete di supporto ulteriore a cui poter fare riferimento quando la documentazione lascia qualche dubbio agli addetti ai lavori.
Caratteristiche utili
Scendendo nel tecnico, possiamo trovare altri elementi in comune tra Django e Laravel: entrambi i framework supportano numerosi plugin da installare grazie ai loro dependency manager pip e composer, ed entrambi controllano automaticamente le chiamate in entrata tramite middleware e decoratori per fare verifiche di sicurezza, validazione degli input dell’utente, fornire servizi di caching. Molto utile il loro modulo ORM: la sigla sta per Object Relationship Model. Questo strumento serve per rendere disponibili al linguaggio di programmazione i dati recuperati dal database e modellarli secondo classi di oggetti con caratteristiche e metodi propri; in questo modo, ad esempio, possiamo costruire una funzione “Utente->invia_mail()” che manda un messaggio a qualcuno, recuperando i dati dinamicamente dal database. Semplice e utile!
A questo punto si sente la differenza tra il nostro semplice file index.php e questa struttura efficiente e complessa che si può mettere in piedi con un framework. Sono stati elencati alcuni dei pezzi più importanti che fanno girare il motore di un software online:
- La connessione al database
- Come viene pubblicato
- Come si scrive il codice
- Come vengono generate alcune informazioni
Ma non finisce qui: la parte esposta agli utenti è fatta di altro, di documenti HTML, di stili CSS, di codice JavaScript per garantire l’interattività tra l’utente e gli elementi del sito.
Tutti questi elementi possono venire generati direttamente dal nostro framework, oppure possiamo addirittura montare un nuovo framework frontend per la parte di presentazione del sito.
Specializzazioni e stack tecnologico
L’approccio di generazione diretta nel framework backend, come i Template di Django, o i fogli Blade di Laravel, fanno uso dello stack tradizionale HTML, CSS, JavaScript, che però spesso viene generato da Python o PHP. In questo modo si può lavorare più velocemente su progetti di piccola scala e che non necessitano di una UI particolarmente complessa. Usando questo metodo possiamo dire che Django e Laravel puri eccellono nella produzione di pannelli amministratore.
L’approccio che prevede l’impiego di un framework frontend invece introduce un ulteriore elemento di complessità al progetto, ma con il vantaggio di poter sviluppare una interfaccia grafica più sofisticata. Spesso se i due livelli si fanno particolarmente complessi si può dividere il team di sviluppo in sottogruppi specializzati nel frontend o nel backend, ottimizzando lo sforzo del team e spingendolo a una collaborazione e scambio costante. I framework frontend da poter utilizzare sono svariati, ma le combinazioni più efficienti sono state quelle di Django e Angular, e Laravel con Vue.js. I framework backend sono tendenzialmente agnostici riguardo l’uso di un particolare strumento per il frontend, ma c’è da dire per esempio che Laravel supporta Vue.js nativamente, e la documentazione riporta numerose guide e strumenti a supporto di questa integrazione.
Non c’è un solo modo per realizzare un progetto software, ma non tutti sono adeguati a farlo in maniera sicura e affidabile. Per questo si sceglie di usare dei framework, selezionati secondo dei criteri di usabilità.
Tra i tanti framework esistenti SocialCities ha trovato più adatti ai propri scopi Laravel e Django. Oltre alla realizzazione di software backend, permettono di realizzare nativamente l’interfaccia utente, o di supportare l’integrazione con un ulteriore framework frontend.
Noi abbiamo gli strumenti, tu le idee! Cosa vuoi realizzare?
👇