/ / Czy lepiej jest dodawać właściwości do obiektu Node module.exports, czy całkowicie zamieniać obiekt? - javascript, node.js, node-moduły

Czy lepiej jest dodać właściwości do obiektu module module.exports, czy też całkowicie go zastąpić? - javascript, node.js, node-modules

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 № 1

Nie 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).