2

私はReactとそのサポートライブラリエコシステムでアプリケーションを設計しています。多くのサービスとヘルパーモジュールを備えた大きなアプリになるだろう。これらの間の依存関係を処理するには、DIコンテナを使用することが理にかなっています。フロントエンドのjavascriptアプリケーションでDIコンテナを使用することは意味があります

[更新]

我々はDIコンテナが解決しようとする

いくつかの問題が

ているDIコンテナを除外/含めるために適切なガイドラインを準備するために用意して不足している問題/解決策を追加してください。それはなしで

モジュールのコンストラクタで 変更はサービス登録に制限されているモジュールの簡単なプラグアンドプレイを可能にします私はオプション

我々は単にインスタンスファクトリモジュール(initaliser)を使用し、以下た、DIコンテナを使用し、これは、同じインターフェイスを持つプラグ、異なるモジュールを有効にし、習慣、それが消費される変更を必要とするであろう。それシングルトンようにするに

その含まどこでも同じインスタンスが参照されるように、サービスモジュールは、そのインスタンスをエクスポートします。しかし失われます

一つは、我々は異なるモジュールのすべての依存関係を見つけることができ、単一の場所(レジストリ)です。

+0

これはおそらく意見に基づいて閉鎖されます。それは、職場でAngular 1.xを使用しなければならない人として、それは価値がないと言うでしょう。私の意見では、WebpackやBrowserifyのような優れたモジュールバンドラーを使うのがよいでしょう。 –

+0

意見ではなく、あなたのような実際の使用や開発者の経験、そしてそれを実装した後に達成される最終結果がそれに答えるべきだと私は思っています。 – bmhaskar

+0

ええ、それが価値があることについては、そのカテゴリに該当するかどうかわからないので、私はその質問にフラグを立てませんでした。私は、FailedUnitTestの1つのDIは問題の解決策であり、すべての単一のアプリケーションで使用する必要があるものではないと私が感じることを最高に明示する答えがあると思います。これが私がリアクトを個人的に好む理由です。そのようなデザインパターンは、すべてのプロジェクトに強制されるのではなく、オプトインです。 –

答えて

1

場合によって異なります。アプリが小さい場合はおそらくいいえ。アプリの要件が頻繁に変更される場合は、SOLIDアプローチとTSを使用してください。

それは「動作するように駆動する車の良いですか?」尋ねるようなものです。しかし、我々はあなたが駐車する場所を持っているか、あなたの家が機能するから、あなたが取得するためにそれをどのくらい離れているか分からない、あなたは、公共交通機関のチケット費用などで何対ガスの支出を行っているどのくらいの...

一般に、DIは拡張機能のコードをオープンにするのに役立ちますが、変更のためにクローズします(オープン/クローズの原則)。高品質のコードを作成することは常に良い考えです。残念ながら、単純なプロジェクトではビジネスの視点DIから、時間の無駄になり、フロントエンドの人々の学習曲線が急になります。

+0

はい、TSを使用する予定であり、要件が変わります。ヘルパーライブラリ、コンポーネント、レデューサーの点でアプリのサイズが大きいです。あなたの提案はDIの資格を得ています。 – bmhaskar

+2

DI trullyがあなたに与えることは、自動車のような "コンポーネントの簡単な変更"です。タイヤ/ラジオを簡単に変更できます。エンジンを交換するだけでも可能です。交換されたコンポーネントは同じインターフェースを実装する必要があります。たとえば、ラジオを変更した場合、接続ソケットは同じでなければなりません。 次に、すべてのサービスを適切に実装すると、アプリケーションコンポーネントを簡単に変更できます(たとえば、インターコムからデスクにチャットの統合を変更するなど)。すべてのクラスのコードを変更する必要はありません。 – PolishDeveloper

+0

たとえば、Angular1.xはDIを使用していて、本当にうまく動作します。 – PolishDeveloper

関連する問題