PHP vs JavaScript per pagine HTML dinamiche

In genere quando ho creato un markup HTML generato dynamicmente, ho utilizzato PHP per archiviare le informazioni e quindi scorrere per creare elementi sulla pagina. Un esempio è la navigazione; crea una matrice di oggetti e poi esegui un ciclo attraverso di essi per echeggiare il markup. Questo aiuta molto a volte che potrei dover apportare modifiche minori (o maggiori) durante lo sviluppo o la manutenzione.

Ultimamente mi sono chiesto se dovrei usare JavaScript per farlo invece. Lo stesso principio, ma usando addElement.

Volevo solo avere alcune opinioni su questo; pro, contro, php vs js, considerazioni su seo, ecc.

Grazie gente!

Farlo lato client significa:

  1. Farlo in molti ambienti diversi anziché uno solo
  2. Avendolo interrotto ogni volta che un utente arriva senza JS (per qualsiasi motivo)
  3. Avendo fallito il lavoro per la stragrande maggioranza dei robot (inclusi i motori di ricerca)
  4. Investire tempo di sviluppo nel convertire tutta la tua logica
  5. Richiede al browser di effettuare richieste aggiuntive al server, rallentando i tempi di caricamento

Al momento di decidere se si dovrebbe fare qualcosa lato client invece che lato server, come regola si pongono due domande:

  1. L’utente trarrebbe beneficio da un feedback istantaneo in risposta a loro facendo qualcosa? Ad esempio un messaggio di errore per dati impropri in un modulo che stanno cercando di inviare. Se è così, allora fare il lato client sarebbe utile.
  2. Può essere fatto lato server? Se è così, fallo prima lato server in quanto è più affidabile (e per cose non-cosmetiche, più difficile da interferire). Costruisci su cose che funzionano .

Non è né l’uno né l’altro tipo di situazione; generalmente dovrai fare entrambe le cose.

Facendolo lato client sarà probabilmente più lento, in quanto il server ha ancora bisogno di capire tutti i dati, ma il client ha bisogno di renderlo; questo coinvolgerà più richieste (molto probabilmente) e la manipolazione del DOM è lenta (specialmente sui browser più vecchi).

La migliore pratica sarebbe quella di produrre qualsiasi markup necessario sul lato server. I motivi di questo includono:

SEO: la maggior parte dei bot crawler non analizza Javascript, quindi salterà su qualsiasi elemento cruciale che stai generando con addElement.

Accessibilità: il tuo sito dovrebbe funzionare praticamente senza Javascript. Considera le persone che potrebbero sfogliare il tuo sito su Kindle, vecchi Blackberry, Nokias o altri telefoni dotati di dati. Non hanno bisogno di tutti gli stili e gli effetti di fantasia, ma dovrebbero almeno essere in grado di aggirare il tuo sito.

Coerenza: JS può aggiungere un altro livello di variabilità tra browser. Perché fare affidamento sul rendering lato client del markup necessario? Fallo sul lato server.

Ovviamente, questo consiglio può essere preso in considerazione se stai sviluppando un’app desktop per JS o utilizzando qualcosa come il framework Sencha Touch .

Se la SEO è la tua preoccupazione, le cose sono semplici: JS non è indicizzato.

Ci sono anche problemi di interfaccia utente: se JS non è abilitato, nessuna roba dipendente da JS verrà caricata.

Una possibilità sarebbe quella di rilevare che tipo di utente sta visualizzando il tuo sito:

  • Se si tratta di un bot: analizzare sul lato server, si può semplicemente emettere ciò che è necessario dal bot, senza cose grafiche, …

  • Se è mobile: mostra una versione ottimizzata per dispositivi mobili, usando qualcosa come Sencha Touch, come ha sottolineato Charlie

  • Se si tratta di un browser standard, senza javascript: esegue il rendering della pagina sul lato server

  • Se si tratta di un browser standard, con javascript abilitato: basta inviare i dati dal lato server (o caricarlo con Ajax) e rendere i dati dal lato client

Puoi usare qualcosa come Moustache , che è un motore di template che gira su molti linguaggi lato server (PHP, Ruby, Java, … ma anche su Javascript, abilitando il rendering della pagina sul lato client!

E prova ad usare un framework Javascript come jQuery , Mootools , Dojo o ExtJS , ti aiuteranno a scrivere codice che verrà eseguito su ogni browser.

PHP è utile per alcune cose, tra cui il tipo di manubrio per la modellazione e la rapida sostituzione del contenuto lato server. Ma non è neanche il massimo per alcune cose, come applicazioni e giochi con una sola pagina, aggiornamenti in tempo reale dei siti web. Queste cose sono dove JavaScript è forte.