私は私の質問を引き出したプロセスを通してあなたを導きます。JavaScriptクラスは受け入れ可能ですかノードモジュールですか?
私はノードでCLIアプリケーションに取り組んでいると私はこのパターンを使用して、私のビジネスロジックをカプセル化するオブジェクトを使用しています:
// my-project/lib/widget/myobject.js
var MyObject = function(x) {
this.x = x;
};
MyObject.prototype.getX = function() {
return this.x;
};
module.exports = MyObject;
私はまた、これらのオブジェクトをテストしています:
// my-project/test/lib/widget/myobject.spec.js
var MyObject = require('../../../lib/widget/myobject.js');
describe('MyObject', function() {
...
});
私は選択した名前とディレクトリ構造に不満を抱いていました。相対パスを書き換えるときに、いくつかのスペックファイルで親ディレクトリの参照(..
)を退屈に数えていることが分かりました。私は、これらのオブジェクト定義を含むルートディレクトリを参照する簡単な方法がなければならないと考えました。
hereの推奨事項の1つに、「アプリケーション固有のモジュールをnode_modulesに入れる」ことが示唆されています。
私はモジュールを理解しているので、npmからダウンロードして自分のプロジェクトで使用するパッケージです。彼らはrequire
を呼び出すと私にエクスポートされた単一のAPIを持つ有用なもののライブラリを含んでいます。これは、アプリケーションの内部使用のために特別に構築された単純な単一目的のクラスを表示する方法ではありません。
これまで私と付き合っていれば、ありがとう!
私のアプリケーションの内部をよりモジュラーにして、オブジェクト指向のままでノードモジュールシステムの意図に従って適切にするにはどうすればよいですか?
オブジェクトで作業しているノードでは、通常はアセットフォルダから格納してインポートするだけです。多くのことは、私の専門知識の範囲外の環境設定、ビルドツール、および配置に依存します。 node_modulesメソッドか、スタティック・アセットをインポートできるアセット・フォルダだけで、うまく動作します(しかし、npmアセットを独自のものと混ぜることはお勧めしません)。 –
あなたはそうです、それは静的資産フォルダのようですが、Nodeがモジュールを探すデフォルトの場所であるという利点があります。それが私にとってのドローです。 require( '../../../ lib/widget/myobject.js')の代わりにrequire( 'myobject')を使用しています。私の不安は、あなたが次に述べたこととまったく同じです。パブリックモジュールとプライベートモジュールを混在させることです。それが私の質問を促したのです。私は基本的に「私はこれをやっていますか、それともこれらのオブジェクトでより意味をなさない他の大会がありますか」と尋ねています。ミキシングは本当にクルージングと感じます。 – jkeeler