0

tl;dr:

モジュール内にのみ存在するコンポーネントへのAngular JS依存性注入を制限/リントする方法はありますか?

明らかにスパゲッティ コードである Angular JS コード ベースを継承しました。さらに、アプリは巨大ですが、ほとんどのアプリ機能は 3 つまたは 4 つのモジュール間で共有されます。

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

現在、お客様から、いくつかのモジュールを簡単に置き換えることができるようにアプリを拡張するように求められており、ソリューションを開発する必要があります。

私は戦略について疑問に思っており、基本的にファサードパターンインターフェースパターンを実装するモジュール間インターフェースを導入することにより、アプリをリファクタリングするという考えを持っていました.

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

移行プロセスを簡単にし、誰もがルールを遵守できるようにしたいと考えています。Angular には、依存性注入のルールを強制する方法がなく、eslint の angular プラグインには、これらの線に沿ったものは何も含まれていません。誰もこれを試しましたか?私はグーグルで検索しましたが、何も見つかりませんでした。

4

1 に答える 1

0

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

この配列には、モジュール自体が定義したすべてのものが含まれます。単体テストに統合して$injector.annotate()( https://docs.angularjs.org/api/auto/service/ $injector#annotate を参照)、必要な依存関係が必要なモジュールで定義されているかどうかを確認できます。

これで少しはお分かりいただけたでしょうか?

于 2016-04-12T13:59:54.663 に答える