Hardcoding HTML rispetto alla generazione di HTML da JSON utilizzando Javascript [chiuso]

3

Backstory

Sono uno sviluppatore più recente e ho appena iniziato questo progetto e ho cercato di evitare il codice di copia-incolla dove possibile e di creare la pagina nel modo più dinamico possibile, in modo che quando qualcuno arriva e voglia per aggiungere funzionalità qui o là, non è necessario aggiungere codice in 20 posizioni diverse. Finora sta andando bene, ma mi sento come se lo facessi TROPPO o forse c'è un'altra soluzione.

Problema corrente

Mi è stato assegnato il compito di creare una legenda per una mappa webapp (GIS).

Per come la vedo io ho due opzioni.

  1. Hard-code in un gruppo di elementi HTML che rappresentano ciascuna voce della legenda e avranno le immagini, le etichette e le descrizioni per ogni voce tutte codificate in.

  2. Metti tutto ciò in un oggetto JSON di facile lettura e itera sull'oggetto, generando ogni elemento HTML usando javascript. In questo modo, potrei abilitare, disabilitare, scambiare, avere bandiere, ecc. Per ogni elemento.

Nota a margine

Sono sicuro che le persone hanno già riscontrato questo problema in precedenza e sto incontrando molte domande di progettazione simili in tutto questo progetto. Sta cominciando a diventare disordinato. Ho generato molte parti diverse dinamicamente, ma tutto il codice di prima che sono arrivato qui è tutto codificato in.

    
posta qbolt 16.03.2017 - 20:29
fonte

4 risposte

7

Hard-code in a bunch of HTML elements that represent each legend entry and they will have the images, labels, and descriptions for each entry all hard-coded in.

Funziona alla grande ... finché non hai bisogno di cambiare qualcosa. Dopotutto, hai detto che stai lavorando su un sito dinamico .

Put all of that into an easy to read JSON object and iterate over the object, generating each HTML element using javascript. This way, I could enable, disable, swap-out, have flags, etc for each element.

Questo è meglio, ma non del tutto corretto. Quello che stai cercando è un modello per l'HTML. Si crea un semplice frammento HTML con i dati effettivi omessi e il motore Web prende una voce della legenda e inserisce i propri dati nel modello. A seconda del framework e della tecnologia utilizzata, potresti avere marcatori statici nell'HTML che sono semplicemente sostituiti dal framework.

Il problema con JSON è forse un po ' troppo dinamico. L'utilizzo di un modello statico consente di visualizzare facilmente il layout e di modificarlo, ma è necessario modificare un singolo documento piuttosto che molti.

    
risposta data 17.03.2017 - 00:01
fonte
1

Non sono d'accordo con le altre risposte. Dovresti fare tutto il possibile sul lato server e il meno possibile sul lato client. Con HTML "hardcoding" presumo che tu intenda che non usi alcun linguaggio lato server, ma piuttosto che i file statici servano dal server. Non farlo! Invece, utilizzare un linguaggio lato server decente che supporti un motore di template. Consiglierei Java e FreeMarker come motore di template. Inoltre, avrai bisogno di un database; Raccomando PostgreSQL ma devo dire che MySQL non è più il disastro totale che un tempo era. Alcuni dicono che hai bisogno di un "quadro"; Non sono d'accordo. È perfettamente possibile scrivere un'applicazione web decente senza alcun tipo di framework.

Ora, quando hai impostato il tuo ambiente lato server, scoprirai che puoi generare la pagina dai dati nel database. Il client lo vedrà come "HTML hardcoded", ma in realtà è una pagina dinamica generata dai dati nel database.

Se hai bisogno di sviluppare interfacce utente moderne, sono sicuro che troverai che JavaScript è necessario. Farei il più possibile sul lato server, supponendo che sia necessario un round trip sul server. Quindi, il server può restituire frammenti HTML in oggetti JSON e il client può quindi assegnarli a .innerHTML di elementi.

    
risposta data 16.03.2017 - 21:15
fonte
1

Come hai sottolineato, la soluzione HTML è più veloce da implementare, ma non molto flessibile. Va bene per proof-of-concept, o pagine statiche che (quasi) non cambiano mai (in base alla progettazione). Se sviluppi una soluzione flessibile, potresti essere in grado di riutilizzarla per altre mappe in futuro, si spera che con poche modifiche, oltre al contenuto stesso. Vai alla soluzione JSON / JavaScript, a meno che non sia qualcosa che non cambierà mai.

UPDATE:

Come juhist menzionato , è anche possibile generare la legenda sul lato server, sebbene tu dica Nulla sulla tecnologia lato server che stai usando, ho trovato difficile dare un buon input per tale suggerimento. Non penso che il rendering di una legenda di una mappa utilizzando JavaScript e JSON causerà seri problemi di prestazioni, ma se lo fa, generare l'HTML sul server (con qualsiasi stack di back-end in uso) è probabilmente una buona idea .

    
risposta data 16.03.2017 - 20:52
fonte
0

Perché non generare automaticamente l'HTML al back-end dalla tua origine dati? È una soluzione distinta dall'HTML codificato o dalla generazione dell'HTML nel browser.

    
risposta data 16.03.2017 - 21:15
fonte

Leggi altre domande sui tag