これは へのフォローアップの質問です。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++では。
最初にすべての関数宣言を記述してから、それらをオブジェクトにエクスポートできます。
function bar() {
//bar
}
function foo() {
//foo
}
module.exports = {
foo: foo,
bar: bar
};
魔法のワンライナーはありませんが、公開したい関数を明示的にエクスポートする必要があります。
私は次のようなことをしました:
var Exported = {
someFunction: function() { },
anotherFunction: function() { },
}
module.exports = Exported;
別のファイルでそれを必要とし、それらの機能にアクセスできます
var Export = require('path/to/Exported');
Export.someFunction();
これは、基本的には関数を含むオブジェクトであり、オブジェクトをエクスポートします。
ES6では、次のような関数をエクスポートできることに注意してください。
export function foo(){}
export function bar(){}
function zemba(){}
エクスポートする関数の前にexport
と書くだけです。詳細 ここ 。
ES6を使用している場合は、次のようなことができます。
function bar() {
//bar
}
function foo() {
//foo
}
export default { bar, foo };
本当に古い質問ですが、同じ問題を自分で解決しなければなりませんでした。私が使用した解決策は、モジュール内にクラスを定義してすべての関数を含め、クラスのインスタンスをエクスポートすることでした。
classes.jsは次のようになります。
class TestClass
{
Function1() {
return "Function1";
}
Function2() {
return "Function2";
}
}
module.exports = new TestClass();
app.jsは次のようになります。
const TestClass = require("./classes");
console.log( TestClass.Function1);
クラスに関数を追加し続けるだけで、それらはエクスポートされます:)