Convención sobre dónde declarar module.exports en archivos Javascript


11

¿Hay alguna convención sobre dónde deberíamos declarar los module.exportsarchivos del módulo no Javascript / Node.js?

Debería estar al comienzo del archivo como:

module.exports = Foo;

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

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

O debería estar al final del archivo:

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

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

module.exports = Foo;

Sé que no hay diferencia técnica. El primer ejemplo es perfectamente válido debido al levantamiento de declaraciones .

Entonces me preguntaba si hay algún tipo de mejores prácticas.


Una ventaja de dejarlo al final es que puede usar objetos de función ( var Foo = function()...), y otra forma de declararlo es directamente ( module.exports.Foo = function()...).
Marcelo

Podría simplemente var Foo = function Foo()...y funcionaría también.
Henrique Barcelos

Ventaja de colocarlo en la parte superior: puede ver la API de su módulo de un vistazo (sin tener que desplazarse hacia abajo).
Adam Zerner

Respuestas:


4

Ciertamente, hay muchas, muchas opciones, que se utilizan comúnmente. Pero eso es terriblemente molesto. Me gusta ponerlo al final, porque eso funciona en todas las circunstancias. Cada vez que me encuentro haciendo algo elegante con module.exports, probablemente haya una mejor manera de hacerlo.

Lo más importante, como siempre, ser consistente. Y sea constante en su equipo.

EDITAR: En la misma noción, me gusta tener todas las requiredeclaraciones al principio. Mis archivos Node.js siempre se ven así:

"use strict";

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


class MyOtherClass extends MyClass {}

module.exports = MyOtherClass;

Nada lujoso, tal como lo esperarías. Una clase por archivo, un archivo por clase. Archivos nombrados después de la clase que contienen, con mayúsculas / minúsculas consistentes. Eche un vistazo a este módulo de nodo, para ver algunos ejemplos: yaioc (descargo de responsabilidad: soy el autor, y esta es una publicidad descarada)

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.