Convention pour savoir où déclarer module.exports sur les fichiers Javascript

11

Existe-t-il une convention pour déclarer les module.exportsfichiers de module sans Javascript / Node.js?

Doit-il être au début du fichier comme:

module.exports = Foo;

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

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

Ou devrait-il être à la fin du fichier:

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

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

module.exports = Foo;

Je sais qu'il n'y a pas de différence technique. Le premier exemple est parfaitement valable en raison du levage de déclaration .

Je me demandais donc s'il y avait une sorte de meilleures pratiques.

Henrique Barcelos
la source
Un avantage de le laisser à la fin est que vous pouvez utiliser des objets fonction ( var Foo = function()...), et encore une autre façon de le déclarer est directement ( module.exports.Foo = function()...).
Marcelo
Je pourrais juste var Foo = function Foo()...et ça marcherait aussi.
Henrique Barcelos du
Avantage de le mettre en haut: vous pouvez voir l'API de votre module en un coup d'œil (sans avoir à faire défiler vers le bas).
Adam Zerner

Réponses:

4

Il y a certainement beaucoup, beaucoup d'options, qui sont toutes couramment utilisées. Mais c'est terriblement ennuyeux. J'aime le mettre à la fin, car cela fonctionne en toutes circonstances. Chaque fois que je me retrouve à faire quelque chose d'extraordinaire avec module.exports, il y a probablement une meilleure façon de le faire.

Surtout, comme toujours, soyez cohérent. Et soyez cohérent dans votre équipe.

EDIT: Sur la même notion, j'aime avoir toutes les requiredéclarations au début. Mes fichiers Node.js ressemblent toujours à ceci:

"use strict";

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


class MyOtherClass extends MyClass {}

module.exports = MyOtherClass;

Rien d'extraordinaire, juste comme vous vous y attendriez. Une classe par fichier, un fichier par classe. Fichiers nommés d'après la classe qu'ils contiennent, avec des majuscules / minuscules. Jetez un oeil à ce module de nœud, pour quelques exemples: yaioc (avertissement: je suis l'auteur, et c'est de la publicité sans vergogne)

Bruno Schäpper
la source