Comment puis-je exporter une variable globale à partir de Require.js?

Je suis en train de faire une bibliothèque externe à l'aide de Require.js. Grâce à Require.js pas de compiler seul fichier js correctement et Require.js (almond.js) le Calendrier Off j'ai compris comment faire pour obtenir tout ce à "compiler" dans une seule optimisé/construit fichier, et que seul fichier fonctionne. Il y a juste un problème: je ne peux pas comprendre comment définir une variable pour ma bibliothèque.

Disons que je veux de ma bibliothèque pour créer window.Foo. J'ai essayé d'utiliser un main.js fichier avec:

window.Foo = require([], function() {
    window.Foo = {someValue: 1};
    return {someValue: 2};
});

et un wrapper fin fragment de:

    return require('main');
}));

Comme vous pouvez le voir, j'ai tenté d'exposer Foo dans l'espace mondial à la fois par la définition explicite de window.Foo de l'intérieur de l'exiger d'appel, et en définissant explicitement de l'extérieur via la valeur de retour de la fin du fragment. Mais ni l'un fonctionne; si j'ajoute un console.log(window.foo) juste après que j'ai charger le construit fichier, il me dit que window.Foo est pas défini.

Si je fais une fenêtre.setTimeout window.Foo finalement ne get set (à {someValue: 1}), mais je ne peux pas très bien s'attendre à ce que mes utilisateurs d'avoir à envelopper l'ensemble de leur code avec un délai d'attente. Quelqu'un peut-il expliquer comment je peux obtenir window.Foo être défini dès que mon optimisé/construit fichier est chargé?

Est-il une raison spécifique pour l'utilisation de RequireJS dans une bibliothèque? Il est probablement mieux de le soutenir à la fois RequireJS et CommonJS et de revenir à la configuration d'un comme la plupart des bibliothèques de le faire ces jours-ci.
Notre principale base de code utilise l'Exigent, et cette bibliothèque externe utilise plusieurs morceaux de code. Pour que la bibliothèque externe à l'effet de levier le code existant partir de notre base de code, il doit être capable de "parler" ... bien qu'une fois qu'il obtient ce code il n'a pas besoin d'Exiger que ce soit, c'est pourquoi je suis en train de le faire apparaître à l'utilisateur comme un tout autonome de la bibliothèque.

OriginalL'auteur machineghost | 2014-03-05