Domanda

Sto cercando di sviluppare un'applicazione Web sfruttando il framework dell'app Yui 3 e non sono in grado di capire come funziona effettivamente la gestione della dipendenza.

Desidero definire un modulo che voglio riutilizzare per un'altra posizione in un file diverso. Ecco il codice che uso per definire il modulo in alcuni file 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

In un altro file (index.js) per utilizzare questo modulo che uso:

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

Il codice di cui sopra funziona, ma vorrei sapere perché le specifiche di dipendenza ridondanti sono richieste in entrambi i luoghi. Se ometto le specifiche di dipendenza durante il caricamento del modulo o durante la definizione del modulo ricevo errori. C'è un modo più succinto di farlo?

È stato utile?

Soluzione

Senza specificare le dipendenze in anticipo nell'oggetto configurazione a cui si passa YUI() Non ha modo di sapere quali moduli deve ottenere prima che possa caricare il tuo MyModule_Home modulo. Se non si specificano i metadati nell'oggetto config IT dovrebbe Vai a caricare il modulo, leggi i requisiti e poi caricali. Questo è non ottimale per le prestazioni ma può essere una soluzione praticabile durante lo sviluppo.

Assicurati di tornare indietro e aggiustarlo più tardi!

Il team Yui usa il costruttore per avvolgere i loro moduli YUI.add Chiamate e che gestisce i metadati per quei moduli. Trovo che sia un flusso di lavoro pesante inutile, quindi mantengo i metadati in due posti. Finisce per non essere un costo di manutenzione così grande nella mia esperienza.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top