Domanda

Nei rail è consigliabile utilizzare gli helper dei moduli?Internamente, tutto si riduce al semplice HTML, quindi perché non scrivere direttamente l'HTML?Le prestazioni saranno ovviamente migliori nella scrittura di codice HTML diretto rispetto all'utilizzo degli helper.L'utilizzo degli helper dei moduli è come una convenzione o qualcosa che gli sviluppatori di binari devono seguire?

È stato utile?

Soluzione

Definisci le prestazioni. La tua performance o le applicazioni? Supponi di avere lo stesso snippet rhtml distribuito tra le visualizzazioni. Di 'che ce l'hai in migliaia di posti. Forse non l'hai mai ottenuto esattamente lo stesso in tutti i luoghi. Ora il tuo cliente vuole cambiare questo (forse diverso ordine di presentazione o qualcosa del genere). Ti ci vorrà un po 'per farlo in tutte le viste, giusto? E è probabile che non la capirai la prima volta. È probabile infatti che continuerai a ricevere segnalazioni di bug per anni a venire in luoghi che hai perso di cambiare.

Il cliente finirà per pagare molto per quel " performance " ;. Forse centinaia di ore lavorative. Forse decine di migliaia se si evita il principio DRY in linea di principio. Pensa invece a tutti i server e tutta la RAM che potrebbe acquistare per quelle ore di lavoro. Se avesse speso tutto per l'hardware, la sua applicazione avrebbe potuto essere cento volte più veloce. Pensa a tutte le cose divertenti con cui potresti lavorare invece di fare il monkeying per cambiare i frammenti di HTML.

Altri suggerimenti

Penso che i form helper siano un riflesso del principio DRY (non ripeterti). Invece di scrivere lo stesso codice per eseguire attività simili, creare un helper per moduli che ti consenta di riutilizzare quel codice è la strada da percorrere. In questo modo, se è necessario apportare una modifica o una correzione, è sufficiente farlo in un unico posto. Aiuta anche a rendere il tuo codice più compatto e leggibile per astrarre un'azione complessa in un aiuto di forma. Lo stesso vale per le viste parziali, sebbene le viste parziali tendano a incapsulare un markup più complesso di un helper di forma.

Gli helper per i moduli sono particolarmente utili per consentire alle rotaie di gestire la creazione di moduli basati sul modello. Per citare l'esempio della documentazione API:

Il seguente codice

<% form_for :person, @person, :url => { :action => "create" } do |f| %>
  <%= f.text_field :first_name %>
  <%= f.text_field :last_name %>
  <%= submit_tag 'Create' %>
<% end %>

genera questo html

<form action="/persons/create" method="post">
  <input id="person_first_name" name="person[first_name]" size="30" type="text" />
  <input id="person_last_name" name="person[last_name]" size="30" type="text" />
  <input name="commit" type="submit" value="Create" />
</form>

Potresti scrivere l'html da solo, ma usando gli helper del modulo devi digitare meno e rendere la creazione del modulo meno dipendente dall'implementazione delle rotaie. Ottieni sempre un modulo che scrive i dati nel tuo modello quando premi il pulsante di invio. Se gli sviluppatori di rotaie cambiano l'implementazione di questo, otterrai automaticamente l'output HTML corretto dai tuoi helper. Se avessi scritto manualmente l'html, dovresti aggiornarlo tutto per riflettere i cambiamenti del funzionamento interno delle rotaie.

Sembra positivo quando uno sviluppatore ha lo stesso nome per classe, ID e nessun valore per un campo di input se ha bisogno di un nome ID diverso e fornisce anche un valore, deve scrivere <%= text_field_tag ​​" nome", :value=>"valore", :id=>"id" ,:class=>""classe %> e per lo stesso HTML può essere < input type ="testo" valore ="valore" classe="nome classe" ="nome" id="id"/>ora pensa in alto 1. valutare il primo helper in html 2. ora consideriamo anche la lunghezza di quello nell'helper dobbiamo anche scrivere:, =>3. a volte ti dimentichi di usare:Oppure, per errore, quindi penso che preferiamo HTML in quel caso e una cosa se il tuo server riceve molta richiesta di quanto non sia troppo occupato e il tempo di risposta sarà aumentato perché < %= %> dovrebbe essere eseguito

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top