1

私は大規模なノードプロジェクトに取り組んでいます。当然、これを複数のソースファイルに分割したいと思います。私がソースファイルの大部分で使用している標準ライブラリのモジュールはたくさんあります。また、ほとんどどこでも使用したい自分のファイルもかなりあります。

私はrequire各ソースファイルの先頭に巨大なブロックを含めることでこの作業を行ってきましたが、これは非常に冗長に感じます。これを行うためのより良い方法はありますか?それとも、これはノードの立派なモジュールシステムの意図された結果ですか?

4

4 に答える 4

3

コンテナモジュールを使用して、一連のモジュールをロードできます。たとえば、次のプロジェクト構造があるとします。

lib/
    index.js
    module1.js
    module2.js
main.js

index.jsライブラリ内の他のモジュールをインポートすることができます。

# index.js
module.exports.module1 = require('./module1');
module.exports.module2 = require('./module2');

次にmain.js、単一のモジュールをインポートするだけで済みます。

# main.js
var lib = require('./lib');

lib.module1.doSomething();
lib.module2.doSomethingElse();

この手法を拡張して、冗長なインポートを減らすことができます。

于 2013-02-02T07:03:46.483 に答える
2

一般的に、ノードでグローバルを使用するよりも、requireブロックの方が良い方法だと思います。

requireがキャッシュされることを覚えておく必要があります。そのため、requireをすべてのコードモジュールに配置すると、毎回新しいインスタンスではなく、常に同じインスタンスを取得します。

このようにすることで、必要な場所に正確に期待される名前空間を持つ適切なコードを取得できますが、グローバルを使用すると、不要なものが含まれます。requireを使用してNodeの方法で実行すると、コードの移植性が少し向上する傾向があります。

于 2012-05-16T06:48:30.010 に答える
1

さて、ここにいくつかのことがあります。

まず、非常に多くのファイルが同じライブラリを何度も必要としている場合は、一歩下がって、コードを適切な方法で実際に分割しているかどうかを判断することをお勧めします。おそらく、特定のライブラリがソースファイルのサブセットによってのみ必要とされるより良い組織がありますか?

次に、オブジェクトはNode.jsアプリ内のすべてのdファイルglobal間で共有されることを忘れないでください。requireたとえばindex.js、「ルート」ソースファイルは次のようなことができglobal.fs = require('fs');、さまざまなファイルすべてからアクセスできます。requireこれにより、sでいっぱいのファイルが不要になりますrequire。(Node.jsではglobal.、ブラウザーとは異なり、接頭辞を付けてグローバル変数にアクセスしていることを明示的に指定する必要があります。)

これは、ほとんど同じであるがビューごとにわずかに異なる必要があるコントローラーのコードがたくさんあり、特定の組織構造ではなくそれらを分割したいCRUDタイプのExpressアプリに適しています。ただし、デバッグを容易にするためです(このファイルではなく、このファイルのエラー)。アプリの構造がそれよりも複雑な場合は、そのトリックを使用する前に、グローバル変数に対する通常の警告を心に留めてください。

于 2012-05-16T04:48:52.813 に答える
0

require-file-directoryを通る絶対パスなしで複数のファイルを要求します。

1-単一のステートメントで複数のファイルを要求できます。2-名前のみのファイルを要求できます。

解決策については、 https: //www.npmjs.com/package/require-file-directoryにアクセスしてください。

于 2017-05-10T06:23:45.883 に答える