Peut-on exporter plusieurs fonctions non-AMD à partir d'un module dans requirejs?

Si j'ai un module non-AMD nommé old.js et à l'intérieur de ce script, j'ai deux fonctions f1 et f2 définies. Je dois les utiliser, comment puis-je exporter les deux?

 require.config({ paths: { "jquery": "https://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min", }, shim: { "old": { deps: ["jquery"], exports: ["f1", "f2"] } }, urlArgs: "bust=" + (new Date()).getTime() }); 

Cela ne fonctionnerait pas. Je vais obtenir une erreur split . Le document ne mentionne pas plusieurs ( http://requirejs.org/docs/api.html#config-shim ). Je suppose que même si ces exemples de jquery sont des fichiers individuels et qu'ils ont une fonction / classe "entrée".

Généralement, si vous souhaitez exporter plus d'un objet à partir d'un module, vous avez toujours besoin d'exporter un seul objet. Le formulaire standard est de joindre vos fonctions à un objet d'exportation et de le renvoyer:

 function f1() { ... } function f2() { ... } return { f1: f1, f2: f2 }; 

S'il s'agit d'un code non-AMD, vous pourriez ne pas avoir l'instruction de return , mais vous devriez encore ajouter l'objet d'exportation.

Il semble que l' option recommandée pour l'ancien code est de ne spécifier que f1 dans la propriété des exports , mais encore plus dans la fonction init . Il est vraisemblablement nécessaire d'utiliser la propriété des exports pour vérifier que le fichier a été chargé, donc peu importe si vous incluez tous les éléments. En supposant que f1 et f2 sont les deux globales, vous pourriez probablement le faire:

 shim: { "old": { deps: ["jquery"], exports: "f1", init: function() { return { f1: f1, f2: f2 }; } } } 

Cela devrait vous permettre d'exiger de l' old et d'obtenir l'objet export plutôt que f1 :

 require(['old'], function(old) { old.f1(); old.f2(); });