7
votes

Configuration des modules avec requisjs lorsque la configuration dépend de l'exigence

excuses si je l'ai manqué dans les documents. Fondamentalement, je souhaite utiliser la fonction de configuration du module requisjs. J'aimerais gérer de manière centrale les valeurs de configure données aux modules dans un package.

Ceci est un exemple de la DOCS: P>

requirejs.config({
    config: {
        'bar': {
            path: path.dirname(module.uri)
            key: crypto.randomBytes(64)
        },
    }
});


0 commentaires

4 Réponses :


2
votes

Je pense que la bonne façon de le faire est de faire un module de configuration ... xxx pré>

puis utilisez-le dans d'autres modules ... p> xxx Pré>

Vous pouvez alors le rendre aussi compliqué que vous le souhaitez! P>

Edit: Vous pouvez polluer l'espace de noms global pour cette classe spéciale ... p> xxx pré>

Ajoutez-le au niveau supérieur requis Call: p> xxx pré>

alors vous pouvez l'utiliser sans toujours l'ajouter à votre définition: P>

// bar.js
define([], function() {
    var key = config.key;
});


3 commentaires

Ouais c'est ce que j'en ai actuellement, mais cela signifie que j'ai besoin d'exiger "config" à partir de chaque module. Cela signifie également que je ne peux pas spécifier différentes configurations pour différents modules de manière centralisée. J'espérais vraiment utiliser la fonctionnalité de configuration requisjs, mais peut-être que ce n'est pas possible


Vérifiez mon édition, les globaux sont appropriés si vous utilisez quelque chose partout


Ah, vrai! Difficile de dire parfois: P Votre solution ne remplace que «config» avec «module», de manière plus compliquée. N'importe où vous avez besoin des paramètres de configuration, vous devrez avoir «module» dans votre définition. Vous pouvez utiliser ma solution mais changer la fenêtre.config = {...} sur module.config = {...} (le module est vraiment l'espace de noms global dans Nodejs?)



0
votes

Après avoir pensé à cela un peu plus, j'ai monté une solution de contournement. Ce n'est pas particulièrement joli mais cela semble fonctionner.

Je fais tout simplement besoin de Djs (...) deux fois, d'abord pour créer la configuration, et de recharger les modules d'application avec la configuration .. p>

# bar.coffee
define ['module'], (module) ->
    # config is now available in this module
    console.log(module.config().key)


0 commentaires

6
votes

Pour ce type de solution, je voudrais que le module dépend du module "Config" que vous pouvez échanger pour une autre utilisation de chemins Config. Donc, si "bar" avait besoin de config, "bar.js" ressemblerait à: xxx pré>

puis barconfig.js pourrait avoir vos autres dépendances: p>

requirejs.config({
  paths: {
    barConfig: 'barConfig-prod'
  }
});


0 commentaires

0
votes

Riffing sur ce que @jrburke dit, j'ai trouvé que le modèle suivant est très utile: définir un module de configuration et ses dépendances dans le main.js juste avant l'invocation de requiert. config () .

main.js xxx

app.js XXX

PLNKR Demo: http://plnkr.co/edit/i35Begaazazeamd0u4cnuj


0 commentaires