私はこの質問が少し議論の余地があると知っていますが、これは実際にangularJSを使って大きなプロジェクトを行う開発者に役立つことがわかりました。angularjs工場のベストプラクティス
ベストプラクティス(少なくともJohn Papaによると)は、angularjsコントローラを全会一致の機能でカプセル化し、プロバイダ/サービス/ファクトリをそれらに注入すると良いと言います。あなたは大きなプロジェクトで作業する場合、最も合理的な仮定は、あなたはので、私はそれぞれの工場を持ってしまった可能な限り少ない冗長性として持つようにしたいということです
(function() {
"use strict";
angular
.module("app.components")
.controller("ctrl", ctrl);
ctrl.$inject = ["$scope", "someFactory", "someOtherFactory"];
function ctrl($scope, someFactory, someOtherFactory) {
// controller logic
}
});
:だから、基本的にはこのようなものに終わるだろう私はそれらをサーバースコープでグループ化しています。
複雑な画面では、私は多分それらの5〜6を使用するので、注入が長く始まると想像することができます。
私がしたいと思うのは、私が注入できる#dataを持っていて、その#dataを通して$ http呼び出しを含むファクトリにアクセスしたいのです。
私の気持ちは、この#dataは、それがリダイレクトさが、より多くのあなたが設定方法と、このような工場いろいろ書いを登録することができ、プロバイダなどの工場のためのすべての設定を含むファイルであってはならないということです。
(function() {
"use strict";
angular
.module("app.factory")
.factory("someFactory", someFactory);
someFactory.$inject = ["$http"];
function someFactory($http) {
// factory logic
}
angular
.module("app")
.config(someFactoryConfig);
someFactoryConfig.$inject = ["#dataProvider"];
function someFactoryConfig(#dataProvider) {
#dataProvider.register("someFactory");
}
});
これは、ui-router内で状態を定義する方法と似ています。
プロバイダを実装する方法に関するアイデアはありますか?
ちょうど私の2セントですが、これは実際には機能を追加しないコードの可読性と維持のための災害のようです。 –
あなたは@ nathan.meadowsというフェアポイントを作っています。私がこれを見ているのは、コンポーネントとは別のデータモジュール(すべての$ http呼び出し)があり、再利用可能であることです。私は私たちのチームのためのアプリの開発者ガイドを持っているので、私は可読性の上の冗長性を好むし、コードベースを理解するために新しいものを訓練するが、複数の注入を特定のポイント – Blitz