Convenzione su dove dichiarare module.exports su file Javascript


11

Esiste una convenzione in cui dovremmo dichiarare i module.exportsfile del modulo non Javascript / Node.js?

Dovrebbe essere all'inizio del file come:

module.exports = Foo;

function Foo() {
    this.bar = 'bar';
}

Foo.prototype.getBar = function() {
    return this.bar;
}

O dovrebbe essere alla fine del file:

function Foo() {
    this.bar = 'bar';
}

Foo.prototype.getBar = function() {
    return this.bar;
}

module.exports = Foo;

So che non c'è differenza tecnica. Il primo esempio è perfettamente valido a causa del sollevamento della dichiarazione .

Quindi mi chiedevo se ci fossero delle migliori pratiche.


Un vantaggio di lasciarlo alla fine è che puoi usare oggetti funzione ( var Foo = function()...), e un altro modo per dichiararlo è direttamente ( module.exports.Foo = function()...).
Marcelo,

Potrei solo var Foo = function Foo()...e funzionerebbe pure.
Henrique Barcelos,

Vantaggio di metterlo in alto: puoi vedere l'API del tuo modulo a colpo d'occhio (senza dover scorrere verso il basso).
Adam Zerner,

Risposte:


4

Ci sono sicuramente molte e molte opzioni, che sono tutte comunemente usate. Ma è terribilmente fastidioso. Mi piace metterlo alla fine, perché funziona in tutte le circostanze. Ogni volta che mi ritrovo a fare qualcosa di stravagante con module.exports, c'è probabilmente un modo migliore per farlo.

Ancora più importante, come sempre, essere coerenti. Ed essere coerente nella tua squadra.

EDIT: Sulla stessa nozione, mi piace avere tutte le requiredichiarazioni all'inizio. I miei file Node.js sono sempre così:

"use strict";

const fs = require("fs");
const MyClass = require("./MyClass");


class MyOtherClass extends MyClass {}

module.exports = MyOtherClass;

Niente di speciale, proprio come ti aspetteresti. Una classe per file, un file per classe. File che prendono il nome dalla classe che contengono, con maiuscole / minuscole coerenti. Dai un'occhiata a questo modulo di nodo, per alcuni esempi: yaioc (dichiarazione di non responsabilità: sono l'autore, e questa è pubblicità spudorata)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.