Era una domenica pomeriggio e stavo cercando l’ispirazione per un nuovo articolo da scrivere, leggevo alcuni articoli sulla programmazione per poter sviluppare una piattaforma web per un cliente. Googlando un po’, mi sono imbattuto in un articolo su un forum di programmazione, con un titolo che ha suscitato parecchio il mio interesse: “Qual è il miglior linguaggio per creare un back-end di un sito? Node JS o PHP?”.

Incuriosito dall’argomento ho aperto il link, ho trovato degli spunti davvero interessanti e ho trovato l’ispirazione giusta per scriverci su.

Se pensate che il NodeJs sia migliore del PHP, vi sbagliate! La risposta è molto semplice: dipende dal suo utilizzo.

Andiamo ad analizzare i motivi principali per cui nessuno dei due prevale.

NodeJs vs PHP – Che il combattimento abbia inizio!

 

Ho deciso di elencare le caratteristiche principali per entrambe le tecnologie, in modo da semplificarti la vita e farti capire quali sono le basi attraverso cui, noi impavidi sviluppatori andiamo a realizzare le piattaforme web 🙂

 

NodeJs:

  • NodeJs è una piattaforma open source runtime basato sul motore javascript V8 di Google Chrome (link: https://v8.dev/);
  • è un framework composto da moduli scritti (di solito) nel medesimo linguaggio, e quelli principali, fungono da emulatore webserver con il quale si codificano e si eseguono le istruzioni impostando la porta del server. Il codice sorgente, per esempio, funzionerà solo se la porta in ascolto è impostata nel codice (es: localhost:8080);
  • funziona molto bene per fare richieste ad API single-page, perfetto con framework come Angular oppure React;
  • è possibile installare tantissimi moduli per potenziare il framework (puoi trovarli su GitHub oppure scaricare i pacchetti npm;
  • è ottimo per gestire, grazie alle API di supporto, richieste di connessioni molto elevate;
  • emulando un spazio su un web server Apache o NGINX, è perfetto per creare app con Cordova/Firebase oppure applicazioni desktop con Electron.

Questo è un semplice esempio scritto in Node, tramite il modulo loader  require js.

Tramite la funzione require e possibile importare nei progetti i moduli di NodeJs con molta semplicità. L'esempio descritto fa in modo che Node, servendosi di Apache, da l'ordine al server di creare/riscrivere il file html chiamato demof.html nel quale sono contenuti i valori di un parametro get.


var http = require('http');
var file = require('fs');
var url = require('url');

http.createServer(function (req, res) {

file.readFile('demof.html', function (err, data) {

var part = url.parse(req.url, true).query;

res.writeHead(200, { 'Content-Type': 'text/html' });
res.write(data);
res.end('Url attivato : '+part.x);

});

}).listen(8080);

 

Passiamo invece al suo acerrimo e “vetusto” nemico PHP, che da un bel po’ di tempo si è aggiornato alla versione 7:

  • è un linguaggio diffuusosi capillarmente negli anni che serve per la creazione di portali semplici fino allo sviluppo di piattaforme complesse come CMS (tipo WordPress, adatto alla creazione di un blog e non solo), e-commerce (Prestashop e Magento, e altri fork);
  • il PHP è supportato da tutti i servizi che offrono spazio hosting, la sua fruizione è disponibile anche gratuitamente con domini di terzo livello (come Altervista);
  • il linguaggio standard è orientato agli oggetti, semplice e incline all’apprendimento anche per i neofiti;
  • con l’arrivo della versione 7 sono state aggiunte nuove funzionalità, come l’operatore elvis, funzioni anonime, la correzione di alcuni problemi di sicurezza e l’aumento delle performance.

 

Questo sono alcune delle caratteristiche principali dei due titani 🙂

Ma vediamo quando usare queste due tecnologie.

Pro e contro NodeJs

Contro

1) NodeJs rispetto al suo “avversario” è meno diffuso, ha bisogno di essere installato nel server e utilizza di base accessi tramite SSH. L'uso delle sue funzionalità è esclusivamente accessibile con l'acquisto di un server. Se non sei molto esperto di Javascript e di NodeJs, può capitare che la macchina ospitante vada in crash perché il framework per poter funzionare ha bisogno di molta memoria (nel codice sorgente devi sempre pensare a questa ottimizzazione per poi non impelagarti in un debugging interminabile sul progetto).

2) Non ti consiglio di usarlo se devi creare estensioni/plugin di qualche CMS come WordPress o Joomla! (meglio ricorrere al loro linguaggio nativo).

3) Nel caso in cui tu debba sviluppare applicazioni web che non generano molto traffico, ti consiglio di non usarlo per il semplice fatto che la quantità di memoria utilizzata influisce sulle prestazioni se non hai una macchina potente (è come una Ferrari senza motore!).

 

Pro

1) NodeJs, assolvendo alla maggior parte delle funzioni PHP, è perfetto per creare una web application mobile con piattaforme come Cordova, Firebase, IDE (Integrated Development Environment), Visual Studio (in cui i simpaticoni di Microzolf hanno integrato sia Cordova che NodeJS); lo stesso discorso vale con le "web" application desktop create il framework Electron.

2) NodeJs è ottimo se devi creare applicazioni Single page, magari accostandolo con React o Angular.

3) In NodeJs ci sono moduli già preinstallati che possono accedere e gestire un database con i linguaggi più popolari come MySQL, NoSQL ODBC e altro ancora, in modo da ricavare in modo sincrono i dati caricati all’interno delle tabelle; naturalmente questa potenzialità è funzionale se la macchina ospitante ha una buona configurazione, sia dal punto di vista software che hardware (quindi attenti alle configurazioni, vi salvano la vita!).

 

Pro e contro PHP

Contro

1) PHP non è adatto per lo sviluppo di web app e non è consigliabile per le nuove tecnologie citate prima (pensa che per poter riportare dei dati all’interno di un’app ha bisogno della tecnologia AJAX).

2) Il linguaggio PHP ha bisogno di un interprete per poter funzionare correttamente, e, spesso è necessario anche smanettare nei file di configurazione per sfruttarlo al meglio.

3) PHP non è adatto per la creazione di portali single page, poiché ha sempre la necessità di fare un refresh alla pagina (se non vuoi un'app con schermo ad intermittenza, non lo usare, ahahaha!)

 

Pro

1) Puoi creare grandi e piccoli gestori di contenuti in modo molto semplice, esiste una grande comunità di sviluppatori PHP che creano librerie pronte all’uso (un esempio sono i TPC/PDF che servono a tradurre l’output HTML in PDF).

2) PHP è ottimo per creare contenuti estremamente dinamici, perché l’interprete una volta tradotto il codice, riporta l’output del sorgente in HTML puro.

3) Nel PHP le librerie, come il PDO, si integrano perfettamente a tutti i linguaggi per costruire i database, dando una marcia in più nell'interoperabilità con altri linguaggi e con Java grazie al supporto ODBC.

Questo porzione di codice in basso fa esattamente la stessa cosa dell'esempio mostrato con node js, ma in questo caso non troveremo nessuna funzione che crea il web server poiché PHP gira solo ed esclusivamente sul server.


<?php function print_var_name($var) { foreach($GLOBALS as $var_name => $value) {
        if ($value === $var) {
            return $var_name;
        }
    }

    return false;
}

    $_GET['valore'] = "valore";

	$file = fopen("index.html", "w") or die("Unable to open file!");
		$txt = '

'.$_SERVER["SERVER_NAME"].'/'.print_var_name($_GET['valore']).'

';
		fwrite($file, $txt);
		
		$txt = "H4ck3rM4n ! ";
		fwrite($file, $txt);
		fclose($file);

?>

Conclusioni

Come hai potuto vedere NodeJs è davvero insostituibile per creare web app sia desktop che mobile.

Il buon vecchio PHP invece, rimane il paladino di webserver come Apache e Nginx (che per la loro diffusione occupano l’80% della rete).

Tirando le somme NodeJs e PHP servono differentemente in base alle funzionalità che realmente ti servono, non innamorarti dell'uno e tradire l'altro.

In questo scontro tra titani il risultato è uno: 0 a 0 palla al centro.

Da H4ck3rM4n è tutto, ci vediamo alla prossima!