2017-04-11 1 views
1

J'ai défini une fonction et une fonction jQuery dans un module Require.js (AMD) et je veux les exporter. Exporter la fonction est facile, mais comment exporter la fonction jQuery? Merci!Comment exporter des fonctions jQuery personnalisées dans Require.js?

// filename: someModule.js 
define(function (require, exports) { 

    function funcA() {} 

    $.fn.someFunc = function(callback) { 
     return this.someFunc1(xxx, callback); 
    }; 
    $.fn.extend({ 
     someFunc2: function() {} 
    }); 
    exports.funcA = funcA; 
    // how to export $.fn.someFunc, so I can use it in another module? 
    // and how to export someFunc2? 

}); 

J'utilise ce fichier ainsi:

// another file: main.js 
define(function (require, exports) { 
    // this module is loaded by require.js 
    var someModule = require('path/to/someModule'); 
    function init() {} 
    exports.init = init; 
}); 

et ce fichier est rendu par un fichier .ejs par le serveur

<script type="text/javascript"> 
    require.config({ 
     baseUrl: '/asset', 
     packages: [ 
     ... 
     ] 
    }); 
    require(['path/to/main.js'], function (main) { 
     main.init(); 
    }); 
</script> 

Répondre

0

Qu'est-ce que vous avez est un plugin jQuery . Pour faire un plugin jQuery consommable par un autre code, le réglage $.fn.someFunc est tous les que vous devez faire. Le code qui doit l'utiliser devra simplement l'indiquer comme une dépendance. Quelque chose comme:

define(["jquery", "someFuncModule"], function ($) { 
    $("some selector").someFunc(...); 
}); 

Vous n'avez pas besoin de l'exporter de votre module AMD.

+0

Désolé. J'ai mis à jour la question parce que j'ai omis certains détails de la structure de mon projet. Puis-je exiger mon someModule.js dans main.js plutôt que de changer le fichier 'ejs' pour l'exiger? Merci. – cmal