Który z tych wzorców jest preferowany w Węźle i dlaczego?
Zastępowanie module.exports
obiekt całkowicie;
module.exports = {
myFuncOne = function(thing) {
console.log(thing);
},
myFuncTwo = function(stuff) {
console.log(stuff);
}
}
Lub dodając właściwości do istniejącego module.exports
obiekt;
module.exports.myFuncOne = function(thing){
console.log(thing);
};
module.exports.myFuncTwo = function(stuff){
console.log(stuff);
}
Czy oba są takie same dla wszystkich zamiarów i celów innych niż preferencje, czy też istnieje bardziej znacząca różnica, która mogłaby mieć tutaj implikacje?
Odpowiedzi:
1 dla odpowiedzi № 1Nie ma jednego prawdziwego sposobu, aby to zrobić, moja rada jest prosta: bądź konsekwentny.
W dokumentach node.js wszystkie przykłady po prostu dodają właściwości do istniejącego obiektu eksportu: https://nodejs.org/docs/latest/api/modules.html
Wyjątkiem jest przypadek, gdy chcesz wyeksportować tylko funkcję (być może konstruktora) - wtedy musisz użyć module.exports = ...
Trochę argumentów na temat rozszerzenia istniejącego eksportuzamiast przesłonięcia może to być mniej pracy dla Garbage Collectora. System modułów Node.js i tak utworzy dla ciebie pusty obiekt eksportu. Więc kiedy go nadpisujesz, GC musi zebrać nieużywany obiekt stworzony przez system modułowy.
Główną różnicą jest to, że „exports
„to tylko pseudonim istniejącego module.exports = {}
obiekt. Podczas dodawania właściwości do exports
, modyfikujesz istniejący obiekt. Po przypisaniu nowej wartości do exports
temu exports
alias nie wskazuje już na module.exports (teraz wskazuje na wartość / obiekt, który mu przypisałeś i nie zostanie on wyeksportowany).