0

TLの依存性注入を制限; DR:インモジュールの依存関係に

のみモジュール内に存在する成分に/リント角度JSの依存性注入を制限する方法はありますか?

明らかにspaghetti codeであるAngular JSコードベースを継承しました。 加えて、大部分のアプリ機能は、アプリが巨大であっても、3つまたは4つのモジュール間で共有されます。

Angularはモジュールレベルで名前空間を制限しないため、チームはモジュール境界を実質的に無視しています。これはそれ自体問題ではありません(Angularはそれを許可します)。問題は、アプリケーションには基本的な構造だけがあり、コンポーネントはほとんど再利用できず、拡張が難しく、モジュールの置き換えについても考えません。

ここで、顧客は私たちにいくつかのモジュールを簡単に置き換えなければならないところまでアプリを拡張するよう依頼しました。ソリューションを開発する必要があります。

私は戦略について疑問に思っており、基本的にfacade patterninterface patternを実装するモジュール間インターフェイスを導入して、アプリをリファクタリングする考えがありました。

言い換えれば、モジュールの実装を外部から隠すサービスが必要なので、モジュールはデータの送信先と送信元を認識できません。同時に、インターフェイスパターンを使用して、モジュールに渡されるデータが特定の期待を確実に満たすようにしたいと考えています。

私は、移行プロセスをより簡単にし、誰もがルールに準拠していることを確認したいと思います。 Angularは依存性注入のための規則を強制する方法がなく、angular plugin for eslintはそれらの行に沿って何も挿入しません。誰もこれを試しましたか?私はグーグルでは何も見つかりませんでした。

+0

コードは1000語に相当します。モジュールの要件内にのみ存在するコンポーネントに対する厳密な/リントのAngular JS依存性注入は何のためのものなのですか?その答えは、「方法はない」可能性が高いため、XY問題ではないことを確認してください。 – estus

+0

申し訳ありませんが、私はあなたに何を求めているのか分かりません。 –

答えて

0

実行時にモジュールから_invokeQueueを見ることで、1つの場所から開始することができます(私は良い場所だとは言いません)。 angular.module('myModuleName')._invokeQueue

この配列には、モジュールが定義したすべてのものが含まれています。ユニットテストでそれを$injector.annotate()https://docs.angularjs.org/api/auto/service/ $ injector#annotateを参照)と一緒に使って、必要な依存関係が必要なモジュールで定義されているかどうかを調べることができます。

これは少しわかりますか?

+0

うん、それは私には意味がある。これは確かに始まる場所ですが、私はそれがハックであることに同意します。 –