Mi avvicinerò a questo da due direzioni (+ HTML grezzo di per sé di fatto terzo)
- Codice generativo HTML proprietario
- Facilità di generazione di codice fornita da una popolare libreria
Codice generativo HTML proprietario
Esempio: in un progetto che ho ereditato, esiste un codice che genera HTML per te, usando metodi proprietari scritti da uno sviluppatore precedente. Lo sviluppatore non è disponibile per la consultazione, ma è abbastanza chiaro che questo codice [anche se utile è alcune circostanze specifiche], in ultima analisi, complica le cose più di quanto si preoccupi di rendere le cose semplici. Vale a dire, per ragioni di portabilità, la migliore linea d'azione sembra essere quella di sbarazzarsi di quel codice e di usare solo HTML stesso. Perché - l'HTML è già portatile e ben compreso. Puoi utilizzare varie funzionalità per formattare, aggiornare ed estendere HTML (con CSS, ecc.). Non puoi farlo facilmente quando hai a che fare con le funzioni del linguaggio.
Libreria popolare
Nel mio caso sto utilizzando Zend Framework 2 che ha le funzionalità per generare elementi HTML per te, che puoi quindi renderizzare e incorporare nei tuoi moduli "view". Per un esempio concreto di sintassi, puoi fare riferimento a Elementi del modulo Zend .
La buona notizia è che il codice è probabilmente usato da migliaia di sviluppatori ed è piuttosto standard. Tuttavia, anche con la piena potenza di un framework, si perdono determinate abilità per manipolare HTML non elaborato. Ad esempio, un semplice compito di aggiungere una classe CSS a una casella di selezione diventa ... andare a HTML, e ... ma attendere selezionare la casella è una variabile ... e la variabile è definita da una chiamata di metodo a Select
elemento. Come si aggiunge un attributo di una classe a quella casella? Devi consultare il manuale dell'API del framework e scrivere il codice per farlo. Questo non è sempre il più intuitivo.
Ad esempio, puoi dirmi come aggiungere una class="right"
a una casella <select>
nel documento HTML? Scommetto che puoi. Ora, puoi dirmi come farlo usando ZF2? (Non pensavo così?) Oh beh, forse tu puoi. Ma per quanto riguarda il prossimo sviluppatore, mantenendo il codice dopo di te?
Btw, il link a Seleziona la casella , in caso volevi provare a capirlo (non credo che il modo per farlo sia nel link, a proposito, dovresti scavare più a fondo).
HTML
Conosciamo già l'HTML. (Un'ipotesi di base). Ma quello che voglio dire qui è generare HTML via HTML stesso + quando necessario, usando alcuni costrutti di base del linguaggio, come for, foreach, if-then-else
(c'è un esempio sotto). Ma questo HTML, in sostanza, rimane HTML e non è nascosto da un'interfaccia proprietaria o da una popolare interfaccia di generazione HTML.
Domanda:
Per me c'era poca domanda se dovevo sbarazzarmi o meno dei costrutti proprietari di generazione HTML [in particolare, quelli implementati in modo discutibile] e usare semplicemente HTML. Ma è diventato molto più difficile quando ho visto i costrutti di costruzione HTML in una libreria ben nota.
Vere queste librerie esistono per rendere le cose più semplici a volte. E a volte aiuta. Ad esempio, per una casella <select>
, posso utilizzare una matrice di qualsiasi dimensione per popolare la casella, senza ricorrere a costrutti di linguaggio più basilari come foreach
. In particolare, il codice della libreria diventa più facile da usare in casi più speciali, come la marcatura di un'opzione (predefinita) selezionata in una casella <select>
. Utilizzando il PHP di base devi implementare questa selezione forzata usando per le istruzioni / if-then-else, quando usi una libreria puoi usare un costrutto come $select->setValue($desiredValue)
.
Codice libreria di esempio:
$select = new Element\Select('language');
$select->setLabel('Which is your mother tongue?');
$select->setValueOptions(array(
'0' => 'French',
'1' => 'English',
'2' => 'Japanese',
'3' => 'Chinese',
));
$form = new Form('language');
//later in view can use something like this:
<? echo $form->render($select); ?>
Esempio di codice HTML (utilizzando il PHP di base)
<select>
<? foreach ($options as $value => $name) { ?>
<option value='<? echo $value ?>'><? echo $name?></option?>
<? } ?>
</select>
Task
Considera di aggiungere un class="right"
per selezionare la casella di uno degli esempi sopra. Io sostengo che uno è più semplice , e uno è più difficile. E io sono tutto per rendere la vita di un programmatore più facile.
Attualmente sto combattendo la tentazione di utilizzare le funzionalità della libreria per creare HTML per me, ma allo stesso tempo sono preoccupato che in seguito mi pentirò di farlo e mi chiedo perché non ho fatto un po 'di più lavoro di base con PHP, per finire con HTML non elaborato che posso usare.
La mia domanda è ... sta usando una libreria che vale la pena? Il prossimo sviluppatore mi maledirà per l'utilizzo del codice di generazione HTML e cercherò di estrapolarlo, anche se ho usato il codice di generazione HTML di un framework popolare?
E in questo senso, il codice generante HTML in generale, considerato dannoso, considerando le osservazioni sopra?