Question

Je suis en train de développer une application web exploitant le cadre de l'application YUI 3 et ne suis pas en mesure de comprendre comment la gestion de fonctionne réellement dépendance.

Je souhaite définir un module que je veux réutiliser pour un autre endroit dans un autre file.Here est le code que j'utilise pour définir le module dans certains fichier dir1 / home / home.js :

YUI.add('MyModule_Home',function(Y){
    Y.namespace("mysite.home");
    Y.mysite.home.SomeView = Y.base.create("SomeView", Y.View, {
        initializer : function() {
            // some logic goes here ... 
        }
        // more functions go here ....
    }
},'0.1',{ requires : ['base','node','app'] });  // <---- Dependency Specifications

Dans un autre fichier (index.js) d'utiliser ce module I utilisation:

YUI( {
  groups: {
    grp1: {
      base: "/path/to/dir1/",
      modules: {
        MyModule_Home: {
          path: "home/home.js",
          requires: ['base', 'node', 'app'] // <------ Dependency Specifications
        }
      }
    }
  }
})

Les travaux de code ci-dessus, mais je voudrais savoir pourquoi les spécifications de dépendance redondantes nécessaires aux deux endroits. Si je laisse de côté la spécification de dépendance lors du chargement du module ou en définissant le module je reçois des erreurs. Y at-il une façon plus succincte de le faire?

Était-ce utile?

La solution

Sans spécifier les dépendances à l'avant dans l'objet de configuration que vous passez à YUI() il n'a aucun moyen de savoir quels modules dont il a besoin pour obtenir avant de pouvoir charger votre module MyModule_Home. Si vous ne spécifiez pas les métadonnées dans l'objet config il devrait go charger votre module, lisez les exigences, puis aller les charger. Ceci est la performance sage sous-optimale, mais peut être une solution viable tout en développant.

Assurez-vous de revenir en arrière et corriger plus tard!

L'équipe de YUI utilise le constructeur rel="nofollow"> pour envelopper leurs modules dans les appels YUI.add et que les poignées les métadonnées pour les modules. Je trouve que pour être un flux de travail lourd inutile donc je maintiens les métadonnées en deux endroits. Il finit par ne pas être que grand un coût d'entretien dans mon expérience.

scroll top