2010-07-21 4 views
5

Wie viele von euch wissen, können die meisten jQuery (oder JavaScript) Plugins, die Sie heutzutage finden, entweder als regulär formatierter Code, als verkleinerte Version oder beides heruntergeladen werden. Für Entwicklungszwecke verwende ich gerne die nicht-minimierten Versionen der Plugins, für den Fall, dass ich einen Firebug Breakpoint setzen oder aus irgendeinem Grund durchsehen muss.Soll ich während der Entwicklung und Bereitstellung veraltete oder reguläre Versionen von jQuery-Plugins verwenden?

Jetzt, wenn ich meine App verpacke und deploy, würde ich lieber auf die verkleinerte Versionen der Plugins um der Effizienz willen. Die einzige Möglichkeit, die ich kenne, ist, beide Versionen zur Hand zu haben, dann manuell alle Referenzen in meinen Ansichten (ich benutze MVC) zu ändern, um auf die verkleinerten Versionen zu zeigen, dann zu paketieren und zu deployen. Idealerweise werde ich auch meine eigenen Javascript-Dateien verkleinern (und vielleicht auch verschleiern).

Kennt jemand eine bessere, effizientere Art der Entwicklung mit nicht-minimierten Plugins (für Lesbarkeit) und die Verwendung mit verkleinerten Versionen (für Effizienz)? Irgendwelche Artikel, auf die Sie mich hinweisen könnten, darüber reden? Ich bin ziemlich neu im Umgang mit Javascript-Deployment und könnte wahrscheinlich Best Practices auffrischen.

Danke.

+0

Sie könnten den gleichen Dateinamen verwenden, und nur die nicht-min-Versionen auf Ihrer Entwicklungsumgebung haben ... – Fosco

Antwort

4

Ich neige dazu, immer die verkleinerten Versionen von JSs der dritten Partei zu verwenden, es sei denn, ich muss es genauer untersuchen ... In jedem Fall könnten Sie einen HTML-Helfer schreiben, der den korrekten Skriptnamen aufgrund einiger Konfigurationen einfügt Debug-vs-Release) ...

Sie am Ende mit etwas würde wie:

<%= Html.IncludeJQuery() %> 

oder wenn alle Skripte die gleiche Konvention (.min.js für verkleinerte Version) machen einen Helfer folgen, daß die Einsätze '.min' in dem Skript, das Sie übergeben, ist in Version

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

Update: auf dieses Objekt

Html Helfer, sind Erweiterungsmethoden MVC Htmlhelper-Klasse, die Sie die Action, Begin, EditorFor verwenden können, emittieren, etc. Sie im Grunde eine neue Methode (albiet statisch nur) befestigen so können Sie Html.MyMethod tun .... Ein Helfer dafür wäre, einige wie:

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); 
    } 
} 

Hinweis, dass dies sehr vereinfachte Version (Nr. Validierung der Zeichenfolge, etc.etc.etc)

Jetzt könnten Sie die IsDebuggingEnabled oder eine Konfiguration verwenden in Ihrem web.config oder eine statische Konfiguration zu definieren, wenn Sie die minimierte Version der Debug-Version ...

Hop, das hilft

+0

Ich bin fasziniert. Ich habe ein wenig über HTML-Helfer gelesen, aber mir ist nicht ganz klar. Was genau würde der Helfer tun? Auf Debug-vs. Release-Kompilierungssymbole prüfen und dann die richtigen Dateien einbinden? Wie würde es wissen, welche Dateien enthalten sind? Vielleicht könntest du ein wenig in deiner Antwort ausarbeiten ... –

1

Dies ist ein Beispiel dafür, wie Rails behandelt sie aufnehmen möchten. Es ist vielleicht eine Best Practice, aber es eliminiert die Last vom Entwickler vollständig.

Eine Konfigurationsdatei Einstellungen für jede Umgebung enthält:

# 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 

die Ressourcen Parsen auf der aktuellen Umgebung in eine Variable abhängig, die überall auf Start der Anwendung verwiesen werden.

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

Dann ein Basis-Layout oder eine Vorlage verwenden, die auf allen Seiten eingeschlossen werden, statt jede Ansicht oder Seite mit seinem eigenen Einstellungen angeben.Die <%= yield %> zeigt an, dass die Ausgabe von untergeordneten Ansichten oder Seiten dorthin geht.

# application.html.erb 

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

Dann haben Sie einfach einen Schlüssel ändern - CURRENT_ENVIRONMENT (Entwicklung, Test oder Produktion) alles auslösen. Es ist auch nützlich für API-Schlüssel und alle anderen Arten von Abhängigkeiten, die bereits zwischen Umgebungen wechseln oder sich ändern könnten.

+0

die Frage ist getaggt asp.net-mvc ... Wie ist das mit Rails verbunden? – serhio

Verwandte Themen