web-dev-qa-db-ja.com

1行にすべての関数を含むmodule.exports

これは へのフォローアップの質問です。Node.jsでは、他のファイルから関数を「含める」にはどうすればよいですか?

Node.jsアプリの一般的な機能を含む外部jsファイルを含めたいのですが。

Node.jsの回答の1つから、他のファイルから関数を「含める」にはどうすればよいですか 、これは次のようにして行うことができます

// tools.js
// ========
module.exports = {
  foo: function () {
    // whatever
  },
  bar: function () {
    // whatever
  }
};

var zemba = function () {
}

すべての関数をエクスポートするのは不便です。すべての関数をエクスポートするワンライナーを持つことは可能ですか?このようなもの;

module.exports = 'all functions';

この方法の方がはるかに便利です。また、後で特定の関数をエクスポートするのを忘れた場合のバグも少なくなります。

ワンライナーではない場合、コーディングをより便利にする簡単な選択肢はありますか?一般的な機能で構成された外部のjsファイルを簡単に含めるだけです。何かのようなもの include <stdio.h> C/C++では。

14
user781486

最初にすべての関数宣言を記述してから、それらをオブジェクトにエクスポートできます。

function bar() {
   //bar
}

function foo() {
   //foo
}

module.exports = {
    foo: foo,
    bar: bar
};

魔法のワンライナーはありませんが、公開したい関数を明示的にエクスポートする必要があります。

31

私は次のようなことをしました:

var Exported = {
   someFunction: function() { },
   anotherFunction: function() { },
}

module.exports = Exported;

別のファイルでそれを必要とし、それらの機能にアクセスできます

var Export = require('path/to/Exported');
Export.someFunction();

これは、基本的には関数を含むオブジェクトであり、オブジェクトをエクスポートします。

11
Peter Huffer

ES6では、次のような関数をエクスポートできることに注意してください。

export function foo(){}
export function bar(){}
function zemba(){}

エクスポートする関数の前にexportと書くだけです。詳細 ここ

9
EpicDavi

ES6を使用している場合は、次のようなことができます。

function bar() {
   //bar
}

function foo() {
   //foo
}

export default { bar, foo };
8

本当に古い質問ですが、同じ問題を自分で解決しなければなりませんでした。私が使用した解決策は、モジュール内にクラスを定義してすべての関数を含め、クラスのインスタンスをエクスポートすることでした。

classes.jsは次のようになります。

class TestClass
{
   Function1() {
        return "Function1";
    } 
    Function2() {
        return "Function2";
    }
}

module.exports = new TestClass();

app.jsは次のようになります。

const TestClass = require("./classes");
console.log( TestClass.Function1);

クラスに関数を追加し続けるだけで、それらはエクスポートされます:)

4
Joe Bourne