JavaScriptファイルでmodule.exportsを宣言する場所に関する規則


11

module.exportsJavascript / Node.jsモジュールファイルを宣言しない場所に慣例はありますか?

次のようにファイルの先頭にある必要があります:

module.exports = Foo;

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

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

または、ファイルの最後にある必要があります。

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

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

module.exports = Foo;

技術的な違いはありません。最初の例は、宣言の巻き上げにより完全に有効です。

だから、ベストプラクティスはあるのかなと思っていました。


これを最後に残すことの1つの利点は、関数オブジェクトを使用できること(var Foo = function()...)、さらにそれを直接宣言する別の方法(module.exports.Foo = function()...)です。
Marcelo

私はできるしvar Foo = function Foo()...、それもうまくいくだろう。
Henrique Barcelos

上部に配置する利点:モジュールのAPIが一目でわかります(下にスクロールする必要はありません)。
Adam Zerner、2016

回答:


4

確かに多くのオプションがあり、それらはすべて一般的に使用されています。しかし、それはひどく迷惑です。それはすべての状況で機能するので、私はそれを最後に置くのが好きです。私が自分がmodule.exportsで何か面白いことをしているのを見つけたときはいつでも、おそらくそれを行うためのより良い方法があるでしょう。

最も重要なことは、いつものように、一貫していることです。そして、あなたのチームで一貫している。

編集:同じ概念で、私requireは最初にすべてのステートメントを持っているのが好きです。私のNode.jsファイルは常に次のようになります。

"use strict";

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


class MyOtherClass extends MyClass {}

module.exports = MyOtherClass;

何も豪華なものではなく、あなたが期待するとおりの方法です。ファイルごとに1つのクラス、クラスごとに1つのファイル。含まれるクラスにちなんで名前が付けられたファイル。いくつかの例については、このノードモジュールをご覧くださいyaioc(免責事項:私は作者です。これは恥知らずな広告です)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.