5

Node.js は初めてですが、モジュール システムとrequire(). そうは言っても、C のバックグラウンドを持っているので、同じモジュールがrequire()どこにでもあるのを見るのは不安です。全体として、C で行われている方法から逸脱したいくつかの設計上の選択につながります。たとえば、次のようになります。

  • マングースモデルを定義するすべてrequire()のファイルでマングースを使用する必要がありますか? または、モデルを定義する各ファイルにマングース インスタンスを挿入します。
  • require()それらを必要とするすべてのモジュールでマングースモデルを使用する必要がありますか? または、これらのモデルを提供するために渡されて使用されるモデル プロバイダーを用意します。

Ect。依存性注入を頻繁に使用する人にとって、私の直感的な C の感覚ではrequire()、モジュールを 1 回だけ使用し、必要に応じてそれを渡します。ただし、いくつかのオープンソースのものを見た後、これはノードのやり方ではないようです。require()物事を非常に簡単にします..

このメカニズムを使いすぎると害がありますか?

4

2 に答える 2

6

require()使用時にモジュールをキャッシュします。どこでも必要な同じファイルまたはモジュールが表示される場合、それらは一度だけロードされ、代わりに保存されたmodule.exportsものが渡されます。つまり、requireどこでも使用でき、パフォーマンスやメモリの問題を心配する必要はありません。

于 2013-08-01T18:51:32.610 に答える
0

cptroot は、引数としてモジュールを渡すのではなく、必要な場所にモジュールを必要とすることを述べているため、安全に実行でき、はるかに簡単です。ただし、require 呼び出しは、簡単に変更できないハードコードされた依存関係として表示する必要があります。たとえば、これらのハードコードされた依存関係をテストするためにモジュールをモックしたい場合は、問題があります。

したがって、モジュール インスタンスを何度も何度も要求するのではなく、引数として渡すと、ハードコードされた依存関係の量が減ります。これは、この依存関係を今すぐ注入するためです。たとえば、テストでは、代わりにモックを簡単に注入することでメリットが得られます。

この道を進む場合は、すべての依存関係を注入し、すべてのハードコーディングされた require 呼び出しを取り除くのに役立つ依存性注入コンテナーを使用することをお勧めします。プロジェクトに適した依存性注入コンテナーを選択するには、この優れた記事を読む必要があります。ファイアーアップもチェック私が実装したもの。

于 2014-04-23T22:04:13.440 に答える