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.


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)

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.