Chcemy zaktualizować jedną wersję jQuery do innej. Używamy różnych wtyczek online i napisaliśmy wiele własnych. Wyzwanie polega teraz na próbie POWOLI MIGRUJCIE wszystkich obiektów skryptowych POWOLI bez pełnego przepisywania. Mam pomysł, w jaki sposób sobie z tym poradzić:Czy istnieje elegancki sposób na powolne aktualizowanie jQuery?
ale mam pytania:
- jest idea poniżej nawet dobry pomysł?
- Czy mogę (bezpośrednio) powiedzieć każdemu obiektowi jQuery, w którym znajdują się zależności?
- Jeśli to zły pomysł ... jak sobie z tym poradzić?
- Czy po prostu przepisuję KAŻDY obiekt, który się łamie po aktualizacji? (Sux!)
Wyjaśniając problem:
Jeśli wszystkie swoje plug-in na żywo wyłącznie w zakresie jednej strony, a następnie różne wersje są łatwo skierowana: po prostu zrobić plik-includes na stronie poziom zamiast poziomu strony głównej (duh!). Jednak obiekty znajdujące się na stronie głównej lub w kontrolkach użytkownika są nieco trudniejsze ... ponieważ potrzebują konkretnych wersji, aby działały poprawnie.
Oto mój pomysł:
Definicja plug-in zaczyna się od anonimowej funkcji.
(function ($){<!- code goes here -->})(jQuery);
Wszystkie zależności, które widziałem, wykorzystują to jako punkt wyjścia.
PRZYKŁADY: jQuery Zależności obejmują wtyczek takich jak: ui.widget, ui.position, ui.core itp
Więc co, jeśli odwołać każdą wersję jQuery (i jego zależności) przy użyciu JavaScript obiekt i przekazać TEGO PRZEDMIOTU do różnych wtyczek wewnętrznych i internetowych?
odniesień obiekt może wyglądać tak:
var jQueryVersion1_3_2 = function(){<!- paste the files contents here-->};
var jQueryVersion1_4_4 = function(){<!- paste the files contents here-->};
wtyczek:
My wewnętrznych i internetowych wtyczek może zostać zachowany jako (normalny) Plik- linki, ale z następującymi zmianami
odchodzą od tej:
// Plug-in X
(function ($){<!- its untouched code -->})(jQuery);
// Plug-in Y
(function ($){<!- its untouched code -->})(jQuery);
// Plug-in Z
(function ($){<!- its untouched code -->})(jQuery);
... wersja tutaj jest do bani!
do tego ...
// Plug-in X
(function ($){<!- its untouched code -->})(jQueryVersion1_3_2);
// Plug-in Y
(function ($){<!- its untouched code -->})(jQueryVersion1_3_2);
// Plug-in Z
(function ($){<!- its untouched code -->})(jQueryVersion1_4_4);
... teraz możemy uaktualnić nasze obiekty powoli.
Jedynym problemem SEE
Wyzwaniem staje zależności wtykowych (między wersjami).W uaktualnieniu testu następowało rozpoczynanie od różnych wtyczek, takich jak:
- ui.widget, ui.position, ui.core, itd. (Wszystkie zostały przerwane po aktualizacji).
tylko odpowiedź widzę to:
Owijanie jQuery i wszystkie różne odniesienia do pojedynczej funkcji oszczędzania i do zmiennej powyżej. Następnie przekaż TEN obiekt pośredniczący do każdej wtyczki AS jQuery.
Pomóż mi Obi-Wan Kenobi ... jesteś moją jedyną nadzieją!
Jaki jest tego powód? Czy uważasz, że niektóre z Twoich wtyczek przestałyby działać po aktualizacji? (Po prostu ciekawy ... W moim doświadczeniu przejście do nowszej wersji jQuery zawsze było bezbolesne) – Andrey
Czy używasz tak wielu przestarzałych funkcji? Zawsze możesz sprawdzić 'http: //docs.jquery.com/Release: jQuery_1.3.2' (zmieniając 1.3.2 z wersją, o której mowa) i sprawdzić, co może wymagać zmiany. w przeciwnym razie ładowanie każdej biblioteki i 'var jQuery_1_3_2 = $ .noConflict()' może być twoim najlepszym wyborem (choć prawdopodobnie dużo narzutów). –
Pamiętaj, że nie chcemy ponownie pisać każdej wtyczki. Chcemy dotknąć tylko kilku naraz. Mamy wiele wtyczek: niektóre są opracowywane wewnętrznie, a inne ze źródeł internetowych. I tak ... obiekty ulegają awarii po aktualizacji z powodu przestarzałości itp. Ale to nie jest pytanie. Już wiem, jak boleśnie odgadnąć i przetestować ... Szukam czegoś bardziej eleganckiego. –