ES2016 Methode Dekorateure sind Funktionen, die drei Parameter:
target
- entweder die Prototyp der Klasse (wenn die zu dekorierende Methode eine Instanzmethode ist) oder der Konstruktor der Klasse (wenn die zu dekorierende Methode statisch ist).
name
- der Name der zu dekorierenden Methode.
descriptor
- die descriptor object der zu dekorierenden Methode.
kann Dekorateur dekorieren (oder verbessern) ein Verfahren, durch das bestehende Verfahren um eine neue Funktion Verpackung, die mehr (oder weniger) Dinge als die ursprüngliche Funktion der Fall ist.
dies mit Hintergrund sollten serverMethod
wickeln die descriptor.value
(die die Methode enthält, die wir wollen dekorieren) um eine neue Funktion, ob wir in dem Client oder Server sind überprüft:
function serverMethod(target: any, name: string, descriptor: PropertyDescriptor) {
const method = descriptor.value; // references the method being decorated
descriptor.value = function(...args) {
if(Meteor.isClient) {
return; // exit the function
}
// This part will run when Meteor.isClient == false
method.apply(this, args);
};
}
class User {
@serverMethod
delete() {
UserCollection.delete(this.id)
}
}
Es ist nicht wichtig um die ...args
zu vergessen, damit die an Ihre Methoden übergebenen Argumente auch von der dekorierten Methode über method.apply
verwendet werden.
Weiterführende Literatur: