2010-07-21 13 views
5

Jak wielu z was wie, większość wtyczek jQuery (lub javascript), które można znaleźć w dzisiejszych czasach, można pobrać jako regularnie sformatowany kod, wersję minified lub oba. Do celów programistycznych lubię używać niemineryfikowanych wersji wtyczek, na wypadek gdyby potrzebowałem ustawić punkt przerwania Firebuga lub przejrzeć go z dowolnego powodu.Czy należy używać minowanych lub regularnych wersji wtyczek jQuery podczas programowania i wdrażania?

Teraz, gdy pakuję aplikację i wdrażam ją, wolałbym przełączyć się na wersję wtyczki, ze względu na wydajność. Jedynym sposobem, jaki mogę to zrobić, jest posiadanie obu wersji pod ręką, a następnie ręczna zmiana wszystkich odniesień w moich widokach (używam MVC), aby wskazywały na zminifikowane wersje, a następnie pakiety i wdrażanie. Idealnie byłoby zminimalizować (i może zaciemnić) moje własne pliki javascript.

Czy ktoś wie o lepszym, bardziej wydajnym sposobie rozwijania z niezminiurowanymi wtyczkami (dla czytelności) i wdrażaniu w wersji zminimalizowanej (dla wydajności)? Jakieś artykuły, które możesz wskazać mi na ten temat? Jestem całkiem nowy, jak radzić sobie z wdrażaniem javascript i prawdopodobnie odświeżyłem najlepsze praktyki.

Dzięki.

+0

Można użyć tej samej nazwy pliku i po prostu mieć wersje nie-min w środowisku programistycznym ... – Fosco

Odpowiedz

4

Zawsze używam zminiaturowanych wersji JS stron trzecich, chyba że potrzebuję konkretnie zajrzeć do niego ... W każdym razie możesz napisać helper HTML, który wstawi poprawną nazwę skryptu w oparciu o pewną konfigurację (może być debugowania vs uwolnienia) ...

można byłoby skończyć z czymś takim:

<%= Html.IncludeJQuery() %> 

czy wszystkie skrypty wykonaj tę samą konwencję (.min.js dla wersji minified) zrobić pomocnika, który wstawia ".min" na skrypcie, który przekazujesz, jest w momencie wydania

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

Aktualizacja:

pomocników HTML, są metody rozszerzenie do klasy HtmlHelper MVC za które można wykorzystać do emitowania actionlink, BeginForm, EditorFor itp Zasadniczo dołączyć nową metodę (albiet statyczne tylko) do tego obiektu więc można zrobić Html.MyMethod .... pomocnik za to byłoby trochę jak:

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

Należy pamiętać, że jest to bardzo uproszczona wersja (. nie walidacja napisu, etc.etc.etc)

Teraz możesz użyć IsDebuggingEnabled lub konfiguracji na twojej web.config lub konfiguracji statycznej aby określić, czy chcesz dołączyć do zminimalizowanej wersji wersji debug ...

Hop to pomaga

+0

Jestem zaintrygowany. Czytałem trochę o pomocnikach HTML, ale nie jestem do końca jasny. Co dokładnie zrobiłby pomocnik? Sprawdź symbole debugowania i wydania kompilacji, a następnie dołącz odpowiednie pliki? Skąd miałaby wiedzieć, które pliki dołączyć? Może mógłbyś trochę rozwinąć w swojej odpowiedzi ... –

1

Jest to przykład tego, jak Rails obsługuje go. To może, ale nie musi być najlepszą praktyką, ale całkowicie eliminuje obciążenie od programisty.

plik konfiguracyjny zawierający ustawienia dla każdego środowiska:

# 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 

analizowania zasobów w zależności od obecnej sytuacji do zmiennej, która pobiera odwołanie wszędzie przy starcie aplikacji.

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

Następnie użyj układ bazowy lub szablon, który zostanie włączona do wszystkich stron, zamiast każdego widoku lub określ swoje własne ustawienia.Wartość <%= yield %> wskazuje, że dane wyjściowe z widoków podrzędnych lub stron są tam przekazywane.

# application.html.erb 

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

Wtedy po prostu trzeba zmienić jeden klucz - CURRENT_ENVIRONMENT (rozwój, test lub produkcji), aby wyzwolić wszystko. Jest także przydatny w przypadku kluczy API i wszystkich innych typów zależności, które już występują lub mogą się zmieniać między środowiskami.

+0

pytanie jest oznaczone jako asp.net-mvc ... Jak to jest powiązane z Railsami? – serhio

Powiązane problemy