Domanda

Sto usando Requisitejs per la prima volta su un progetto. Sto lavorando in un ambiente che ha già in atto molti JavaScript e sto cercando modi puliti per introdurre il mio codice.

Il problema che sto riscontrando è che non riesco a trovare un modulo di jQuery che posso caricare che non ravviva JQuery esistente.

Sono stato sorpreso dal fatto che anche Requisito-JQuery.js introduca una versione globale di jQuery. C'è un modo per caricare jQuery come modulo senza introdurre globali?

È stato utile?

Soluzione

JQuery 1.7 supporta il caricamento AMD. Ma il trucco sta evitando un conflitto di denominazione del modulo, dal momento che JQuery hardcode il proprio nome del modulo come "jQuery". Se stai definendo un altro modulo come "jQuery" (diciamo, nella proprietà "Paths" nella configurazione di Requisitijs), causerà tale conflitto.

Per caricare jQuery nell'ambito dell'applicazione Requisitijs, definire un modulo, come "jQuery-carder" e quando si desidera caricare jQuery, fallo tramite "jQuery-carler":

define(['path/to/jquery.min'], function () {
    return jQuery.noConflict(true);
});

Requisitijs "cache" il tuo riferimento a jQuery in modo che Noconflict esegui solo la prima volta che viene caricato JQuery-caricatore.

Altri suggerimenti

Più versioni di jQuery su una pagina sono cattive. Smetti di hackerare e aggiornare jQuery o utilizzare la versione precedente.

Per quanto riguarda il consumo $ prova sicuro

(function($) {
    // requirejs inclusion block for loading


}(jQuery.noConflict(true));

Se passi true a .noConflict Sostituirà il vecchio jQuery variabile e non distruggerlo a livello globale.

Ciò significa che puoi passarlo in silenzio. Dì che hai

<script src="jquery-1.2">
<script src="jquery-1.5">

Quindi l'uso del codice sopra metterebbe l'1.2 $ & jQuery Di nuovo nello spazio globale e darti la 1.5 jQuery come locale $ Nella tua chiusura

Ancora una volta consiglio Di nuovo Usando più versioni perché è un casino giusto e un incubo di manutenzione.

Se si utilizza 1.5 puoi anche usare .sub Per consentirti di estendere jQuery a livello locale senza corrompere il globale jQuery

caricare lo script jQuery e quindi utilizzare var myJ = jQuery.noConflict();

o qualunque variabile di scelta rapida tu voglia

http://docs.jquery.com/using_jquery_with_other_libraries

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top