Unire codice con le dipendenze?
-
13-10-2019 - |
Domanda
Questo potrebbe essere abbastanza semplice, ma devo dire che sono un po 'confuso su questo argomento.
sto scrivendo codice basato su due biblioteche popolari:
- jQuery
- underscore.js
Mi chiedo solo quale sarebbe il modo migliore per isolare il codice e prevenire i conflitti e come unire con le sue dipendenze?
Con la fusione intendo metterli all'interno dello stesso file.
Soluzione
Si potrebbe facilmente mettere i due di loro nello stesso file, perché le uniche cose che si trasformano globale sono window._
, window.$
e window.jQuery
. Le altre variabili e funzioni sono avvolti in un ambito locale, quindi non ci sarà alcun conflitto.
Modifica : il proprio codice potrebbe essere messo nello stesso file troppo. E se si preferisce rimuovere le variabili globali, sia jQuery e Underscore hanno un metodo no-conflitto, che sostituisce le variabili globali con i loro vecchi valori (spesso undefined
). Si potrebbe avvolgere il codice nel proprio ambito locale e non vi sarà più alcun problema:
// jQuery and Underscore source here
// You code here, wrapped in a self-executing function:
(function($, _){
// here you can add your code:
$('#test').text('jQuery works');
_(3).times(function(){
alert('Underscore works' );
});
})(jQuery.noConflict(true), _.noConflict());
// no jQuery nor Underscore here:
alert(typeof jQuery, typeof $, typeof _);
Questo sembra abbastanza difficile, ma lasciatemi spiegare molto rapidamente. È possibile eseguire una funzione immediatamente dopo aver definito, in questo modo:
(function(){
alert('I am being executed');
})(); // <-- basically how you call a function normally: func();
E si può passare gli argomenti in esso:
(function(a){
alert(a);
})('test');
Sia $.noConflict()
e _.noConflict()
rimuovere le variabili globali e restituiscono un riferimento alla variabile jQuery e sottolineatura. Così si può passare questi nella funzione self-executing come argomenti e felice di tutti (: