Convenção para onde declarar module.exports em arquivos Javascript


11

Existe alguma convenção para onde devemos declarar os module.exportsarquivos do módulo sem Javascript / Node.js?

Deve estar no começo do arquivo, como:

module.exports = Foo;

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

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

Ou deveria estar no final do arquivo:

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

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

module.exports = Foo;

Eu sei que não há diferença técnica. O primeiro exemplo é perfeitamente válido devido ao levantamento da declaração .

Então, eu estava pensando se há algum tipo de prática recomendada.


Uma vantagem de deixá-lo no final é que você pode usar objetos de função ( var Foo = function()...), e ainda outra maneira de declarar isso é diretamente ( module.exports.Foo = function()...).
Marcelo

Eu poderia apenas var Foo = function Foo()...e iria funcionar também.
Henrique Barcelos

Vantagem de colocá-lo no topo: você pode ver a API do seu módulo rapidamente (sem precisar rolar para baixo).
Adam Zerner

Respostas:


4

Certamente existem muitas e muitas opções, que são comumente usadas. Mas isso é terrivelmente irritante. Eu gosto de colocar no final, porque isso funciona em todas as circunstâncias. Sempre que me vejo fazendo algo sofisticado com o module.exports, provavelmente existe uma maneira melhor de fazê-lo.

Mais importante, como sempre, seja consistente. E seja consistente em sua equipe.

EDIT: Na mesma noção, eu gosto de ter todas as requiredeclarações no início. Meus arquivos Node.js sempre ficam assim:

"use strict";

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


class MyOtherClass extends MyClass {}

module.exports = MyOtherClass;

Nada extravagante, do jeito que você esperaria. Uma classe por arquivo, um arquivo por classe. Arquivos com o nome da classe que contêm, com maiúsculas / minúsculas. Dê uma olhada neste módulo do nó, para alguns exemplos: yaioc (isenção de responsabilidade: eu sou o autor e isso é publicidade sem vergonha)

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.