2010-07-21 11 views
5

Come molti di voi sanno, la maggior parte dei plugin jQuery (o javascript, per quella materia) che si trovano in questi giorni possono essere scaricati sia come codice formattato regolarmente, versione minificata o entrambi. A fini di sviluppo, mi piace utilizzare le versioni non minified dei plugin, nel caso in cui sia necessario impostare un punto di interruzione Firebug o visualizzarlo per qualsiasi motivo.Devo utilizzare versioni minime o regolari dei plugin jQuery durante lo sviluppo e l'implementazione?

Ora quando impacchetta la mia app e la distribuisco, preferisco passare alle versioni minificate dei plugin, per ragioni di efficienza. L'unico modo per farlo è avere entrambe le versioni a portata di mano, quindi modificare manualmente tutti i riferimenti nelle mie viste (utilizzo MVC) per puntare alle versioni minificate, quindi creare pacchetti e distribuire. Idealmente starò minizzando (e forse offuscando) i miei file javascript.

Qualcuno sa di un modo migliore, più efficiente di sviluppare con plug-in non minified (per la leggibilità) e l'implementazione con versioni minified (per l'efficienza)? Qualche articolo che potresti indicarmi per parlarne? Sono abbastanza nuovo su come gestire la distribuzione di javascript e probabilmente potrei rispolverare le best practice.

Grazie.

+0

È possibile utilizzare lo stesso nome file e avere solo le versioni non min nell'ambiente di sviluppo ... – Fosco

risposta

4

Tendo ad utilizzare sempre le versioni minificate di JS di terze parti a meno che non sia specificamente necessario esaminarlo ... In ogni caso, è possibile scrivere un helper html che inserisca il nome dello script corretto in base ad alcune configurazioni (può essere di debug vs stampa) ...

Si potrebbe finire con qualcosa di simile:

<%= Html.IncludeJQuery() %> 

o se tutti gli script seguono la stessa convenzione (.min.js per la versione minified) fanno un aiutante che inserisce il '.min' sullo script che si passa è quando in versione

<%= Html.IncludeCorrectVersionOfScript("jquery-1.4.2.js") %> 

Aggiornamento:

aiutanti Html, sono i metodi di estensione per classe HtmlHelper di MVC che è possibile utilizzare per emettere l'ActionLink, BeginForm, EditorFor, ecc Che, fondamentalmente, allega un nuovo metodo (albiet statica solo) a quell'oggetto in modo da poter fare Html.MyMethod .... Un aiuto per questo sarebbe un po 'come:

public static class ScriptIncludeHelper 
{ 
    public static MvcHtmlString IncludeCorrectVersionOfScript(this HtmlHelper html, string script) 
    { 
     if (!html.ViewContext.HttpContext.IsDebuggingEnabled) 
      script = script.Replace(".js", ".min.js"); 
     var tag = string.Format("<script type=\"text/javascript\" src=\"{0}\"></script>", script); 

     return MvcHtmlString.Create(tag); 
    } 
} 

notare che questa è la versione molto semplificata (. alcuna convalida della stringa, etc.etc.etc)

Ora è possibile utilizzare IsDebuggingEnabled o una configurazione nel vostro web.config o di una configurazione statica per definire se si desidera includere la versione ridotta della versione di debug ...

Hop questo aiuta

+0

Sono incuriosito. Ho letto un po 'di HTML helper, ma non sono completamente chiaro. Cosa farebbe esattamente l'aiutante? Controllare i simboli di compilazione di debug e di rilascio e quindi includere i file corretti? Come saprebbe quali file includere? Forse potresti elaborare un po 'nella tua risposta ... –

1

Questo è un esempio di come Rails gestisce. Può essere o non essere una buona pratica, ma elimina completamente il carico dallo sviluppatore.

un file di configurazione che contiene le impostazioni per ogni ambiente:

# resources.yml 
# example config file 

development: 
    jquery_url: http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js 

test: 
    jquery_url: http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js 

production: 
    jquery_url: http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js 

analizzare le risorse a seconda del contesto attuale in una variabile che viene fatto riferimento in tutto il mondo all'avvio dell'applicazione.

RESOURCES = YAML::parse('resources.yml')[CURRENT_ENVIRONMENT] 

Poi utilizzare un layout di base o un modello che viene incluso in tutte le pagine, invece di avere ogni visualizzazione o la pagina di specificarlo proprie impostazioni.Lo <%= yield %> indica che l'output delle viste o delle pagine figlio va lì.

# application.html.erb 

<!DOCTYPE html> 
<html 
<head> 
    <script src="<%= RESOURCES['jquery_url'] %>"</script> 
</head> 
<body> <% yield %> </body> 
</html> 

Poi è sufficiente cambiare una chiave - CURRENT_ENVIRONMENT (sviluppo, test o di produzione) per innescare tutto. È anche utile per le chiavi API e tutti gli altri tipi di dipendenze che già fanno o potrebbero potenzialmente cambiare tra gli ambienti.

+0

la domanda è codificata asp.net-mvc ... Come è collegato a Rails? – serhio

Problemi correlati