Generalmente scrivo codice che uso solo, ma ho un github pubblico con alcune librerie JS. Un componente chiave della maggior parte delle librerie sono gli eventi. La mia domanda può essere supponente, ma non so dove altro postarla ed è importante per me come perfezionista.
Durante la scrittura di un'API gli eventi devono essere inviati nuovamente attraverso ogni livello, o ci si dovrebbe aspettare che un cliente sappia come accedere a quegli eventi?
Esempio
class Button {
onClick(){
this.emit('click');
}
}
class UI {
constructor(){
let self = this;
this.button = new Button();
// is this necessary?
this.button.on('click', function(){
self.emit('button.click');
});
}
}
class Application {
constructor(){
this.ui = new UI();
// this?
this.ui.on('button.click', function(){
});
// or is this acceptable?
this.ui.button.on('click', function() {
});
}
}
Questa è una domanda abbastanza ampia, poiché sto anche chiedendo la necessità di fare o non fare questo:
class Foo {
explode(){
console.log('boom');
}
}
class Bar {
constructor(){
this.foo = new Foo();
}
// necessary?
explodeFoo(){
return this.foo.explode();
}
}
class Application(){
constructor(){
this.bar = new Bar();
// this?
this.bar.explodeFoo();
// or is this fine?
this.bar.foo.explode();
}
}