Konvention, wo module.exports in Javascript-Dateien deklariert werden soll

11

Gibt es eine Konvention, nach der wir die module.exportsModuldateien no Javascript / Node.js deklarieren sollten ?

Sollte es am Anfang der Datei sein wie:

module.exports = Foo;

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

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

Oder sollte es am Ende der Datei sein:

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

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

module.exports = Foo;

Ich weiß, dass es keinen technischen Unterschied gibt. Das erste Beispiel ist aufgrund des Anhebens der Deklaration vollkommen gültig .

Also habe ich mich gefragt, ob es Best Practices gibt.

Henrique Barcelos
quelle
Ein Vorteil, wenn Sie es am Ende belassen, ist, dass Sie Funktionsobjekte ( var Foo = function()...) verwenden können. Eine weitere Möglichkeit, es zu deklarieren, ist direkt ( module.exports.Foo = function()...).
Marcelo
Ich könnte es einfach var Foo = function Foo()...und es würde auch funktionieren.
Henrique Barcelos
Vorteil, wenn Sie es ganz oben platzieren: Sie können die API Ihres Moduls auf einen Blick sehen (ohne nach unten scrollen zu müssen).
Adam Zerner

Antworten:

4

Es gibt sicherlich viele, viele Optionen, die alle häufig verwendet werden. Aber das ist furchtbar nervig. Ich mag es am Ende zu setzen, weil das unter allen Umständen funktioniert. Immer wenn ich mit module.exports etwas Besonderes mache, gibt es wahrscheinlich einen besseren Weg, dies zu tun.

Am wichtigsten ist, wie immer, konsequent zu sein. Und seien Sie konsequent in Ihrem Team.

EDIT: Aus dem gleichen Grund möchte ich alle requireAussagen am Anfang haben. Meine Node.js-Dateien sehen immer so aus:

"use strict";

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


class MyOtherClass extends MyClass {}

module.exports = MyOtherClass;

Nichts Besonderes, genau so, wie Sie es erwarten würden. Eine Klasse pro Datei, eine Datei pro Klasse. Dateien, die nach der Klasse benannt sind, die sie enthalten, mit Groß- / Kleinschreibung. Schauen Sie sich dieses Knotenmodul an, um einige Beispiele zu finden: yaioc (Haftungsausschluss: Ich bin der Autor, und dies ist schamlose Werbung)

Bruno Schäpper
quelle