E 'possibile iniettare dipendenze in moduli ES2015 come in altri linguaggi di programmazione come C# o Java? Se importo un modulo, ne creo una forte dipendenza e non posso cambiarlo più tardi in fase di runtime. Ad esempio, ho il seguente codice JavaScript:Inject dependencies in ES2015 module
import Animal from './dog';
class Person {
feedAnimal() {
new Animal().feed();
}
}
Sto importando il modulo cane. Ma cosa succede se voglio cambiarlo in un gatto? Al momento devo modificare la linea 1 a mano ma in alcune situazioni lo voglio configurabile dall'esterno in modo che in alcune condizioni ci debba essere un gatto e in alcune altre condizioni dovrebbe essere un gatto. Tutto ciò che si può fare con l'iniezione classica delle dipendenze.
So che ci sono alcuni DI framework là fuori come Scatter, Electrolyte, Wire e così via, ma purtroppo la maggior parte di essi richiedono una sintassi speciale e sono non fatto per ES2015 modules.
Come si desidera che l'iniezione di dipendenza funzioni? Si potrebbe fare 'class Person {constructor (Animal) {this.Animal = Animal; } feedAnimal() {new this.Animal(). feed()}} ', ma sembra che ti aspetti qualcosa di più avanzato. – lyschoening
Non sono sicuro che se ['require-inject'] (https://www.npmjs.com/package/require-inject) lo supporta, ma potresti voler dare un'occhiata. – thefourtheye
@lyschoening grazie, ma voglio cambiare le dipendenze dei moduli interni come scriverei un test unitario. – LongFlick