In genere quando ho creato un markup HTML generato dinamicamente, ho utilizzato PHP per archiviare le informazioni e quindi scorrere per creare elementi sulla pagina. Un esempio è la navigazione; crea una serie 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:
Al momento di decidere se si dovrebbe fare qualcosa lato client invece che lato server, come regola si pongono due domande:
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 cosa 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.
Consistenza: 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 si sta sviluppando un'app desktop per JS o si utilizza qualcosa come Sencha Touch framework.
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 produrre ciò che è necessario dal bot, senza cose grafiche, ...
Se è un cellulare: mostra una versione ottimizzata per dispositivi mobili, usando qualcosa come Sencha Touch, come sottolineò 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.