Modulo di implementazione del module in Javascript con dipendenza da jquery

Qual è il modo migliore per implementare il model di module, mentre il codice del module dipende da biblioteche di terze parti, ad esempio jQuery?

var someModule = (function(){ //private attributes var privateVar = 5; //private methods var privateMethod = function(){ return 'Private Test'; }; return { //public attributes publicVar: 10, //public methods publicMethod: function(){ return ' Followed By Public Test '; }, //let's access the private members getData: function(){ //make ajax call and do some processing and generate output return privateMethod() + this.publicMethod() + privateVar; } } })(); //the parens here cause the anonymous function to execute and return someModule.getData(); 

La mia domanda è: Sto pensando di mettere tutto il codice in una libreria come la moda in un file javascript.

Come si vede nel metodo getData() , ho intenzione di effettuare chiamate ajax. Voglio usare la libreria jQuery per questo. Adesso come faccio a codificare un module javascript, mentre si basa su jQuery?

Devo fare tutta la mia intera biblioteca un plugin jQuery?

    Un ottimo tutorial / esempio può essere trovato qui o qui . So che questo non è il model del module, ma offre gli stessi vantaggi del model del module rivelatore e consente di estendere lo spazio dei nomi su file, se necessario. Di seguito è riportto il codice dell'esempio.

     //Self-Executing Anonymous Func: Part 2 (Public & Private) (function( skillet, $, undefined ) { //Private Property var isHot = true; //Public Property skillet.ingredient = "Bacon Strips"; //Public Method skillet.fry = function() { var oliveOil; addItem( "\t\n Butter \n\t" ); addItem( oliveOil ); console.log( "Frying " + skillet.ingredient ); }; //Private Method function addItem( item ) { if ( item !== undefined ) { console.log( "Adding " + $.trim(item) ); } } }( window.skillet = window.skillet || {}, jQuery )); //Public Properties console.log( skillet.ingredient ); //Bacon Strips //Public Methods skillet.fry(); //Adding Butter & Frying Bacon Strips //Adding a Public Property skillet.quantity = "12"; console.log( skillet.quantity ); //12 //Adding New Functionality to the Skillet (function( skillet, $, undefined ) { //Private Property var amountOfGrease = "1 Cup"; //Public Method skillet.toString = function() { console.log( skillet.quantity + " " + skillet.ingredient + " & " + amountOfGrease + " of Grease" ); console.log( isHot ? "Hot" : "Cold" ); }; }( window.skillet = window.skillet || {}, jQuery )); try { //12 Bacon Strips & 1 Cup of Grease skillet.toString(); //Throws Exception } catch( e ) { console.log( e.message ); //isHot is not defined } 

    Puoi provare qualcosa di simile:

     var someModule = (function($){ //private attributes var privateVar = 5; //private methods var privateMethod = function(){ return 'Private Test'; }; return { //public attributes publicVar: 10, //public methods publicMethod: function(){ return ' Followed By Public Test '; }, //let's access the private members getData: function(){ //make ajax call and do some processing and generate output $.ajax( /* ... */ ); return privateMethod() + this.publicMethod() + privateVar; } } })(jQuery); //the parens here cause the anonymous function to execute and return someModule.getData(); 

    Assicurarsi che jQuery.js sia incluso prima che questo codice venga eseguito.