Vogliamo eseguire l'aggiornamento da una versione di jQuery a un'altra. Utilizziamo vari plug-in online e ne abbiamo scritti molti di nostri. La sfida ora si presenta sotto forma di cercare LENTAMENTE MIGRARE tutti gli oggetti scriptati LENTAMENTE senza una completa riscrittura. Ho un'idea su come gestire questo:C'è un modo elegante per aggiornare jQuery lentamente?
ma ho DOMANDE:
- è l'idea di sotto anche una buona idea?
- Posso dire (direttamente) a ciascun oggetto jQuery dove risiedono le dipendenze?
- Se questa è una cattiva idea ... come la gestisci?
- Devo semplicemente riscrivere OGNI oggetto che si verifica durante l'aggiornamento? (Sux!)
che illustrano il problema:
Se tutti i plug-in di vivere solo nell'ambito di una singola pagina, quindi diverse versioni sono facilmente affrontati: fare semplicemente il file-include la pagina livello invece del livello della pagina principale (duh!). Tuttavia, gli oggetti che vivono nella pagina principale o nei controlli utente sono un po 'più difficili ... poiché hanno bisogno di versioni specifiche per funzionare correttamente.
è qui la mia idea:
La definizione di un plug-in inizia con una funzione anonima.
Tutte le dipendenze che ho visto utilizzano questo come punto di partenza.
ESEMPI: dipendenze jQuery includono plug-in come: ui.widget, ui.position, ui.core, ecc
Che importa se mi riferisco ogni versione di jQuery (e le sue dipendenze) utilizzando un JavaScript opporsi e passare QUESTO OGGETTO nei vari plug-in interni e online?
RIFERIMENTI oggetto potrebbe andare in questo modo:
var jQueryVersion1_3_2 = function(){<!- paste the files contents here-->};
var jQueryVersion1_4_4 = function(){<!- paste the files contents here-->};
i plug-in:
mie in-house e plug-in on-line potrebbero ancora essere inclusi come (normale) file- link, ma con le seguenti modifiche
GO dA QUESTO:
// Plug-in X
(function ($){<!- its untouched code -->})(jQuery);
// Plug-in Y
(function ($){<!- its untouched code -->})(jQuery);
// Plug-in Z
(function ($){<!- its untouched code -->})(jQuery);
... versioning fa schifo qui!
A QUESTE ...
// 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);
... ora possiamo aggiornare i nostri oggetti lentamente.
L'unico problema che VEDERE:
La sfida diventa le dipendenze dei plug-in (tra le versioni).In un test di aggiornare il seguente ha cominciato a rompere attraverso vari plug-in, le cose come:
- ui.widget, ui.position, ui.core, ecc (tutti hanno fatto irruzione sulla riqualificazione).
l'unica risposta che vedo è:
Wrapping jQuery e tutti i vari riferimenti in una singola funzione e risparmio energetico che nella variabile sopra. Quindi passare QUEST'oggetto intermedio in ogni plug-in AS jQuery.
Aiutami Obi-Wan Kenobi ... sei la mia unica speranza!
Qual è il motivo? Pensi che alcuni dei tuoi plug-in smetteranno di funzionare dopo l'aggiornamento? (Solo curioso ... Nella mia esperienza, passare a una versione più recente di jQuery è sempre stato indolore) – Andrey
Stai usando quelle funzioni deprecate? Puoi sempre controllare 'http: //docs.jquery.com/Release: jQuery_1.3.2' (cambiando 1.3.2 con la versione in questione) e guarda cosa potrebbe essere necessario modificare. altrimenti, caricare ogni libreria e 'var jQuery_1_3_2 = $ .noConflict()' potrebbe essere la soluzione migliore (anche se probabilmente un sacco di spese generali). –
Ricorda, non vogliamo dover riscrivere tutti i plug-in. Vogliamo toccare solo alcuni alla volta. Abbiamo molti plug-in: alcuni sviluppati internamente e altri da fonti online. E sì ... gli oggetti falliscono una volta aggiornati per essere deprecati ecc. Ma questa non è la domanda. So già come indovinare e testare dolorosamente ... Sto cercando qualcosa di più elegante. –