4

AngularJS への進出で、私は少し混乱しました。これの主な理由は、全体のモデル部分が何であるかをよく理解していなかったからです. つまり、これは MVC フレームワークなので、モデルが必要でしたね。それで、私はその問題について少し読んだ。このドキュメントの一部を読んでみました。

そこからわかったのは、コントローラのモデル的な側面、実際には$scope辞書の中にあるものだということでした。結構です。これは、言説の作成者の1人であるevil-troutによるブログ投稿を読むまで、私を悩ませませんでした.

彼がなんとかしようとしていたのは、Angular には適切なモデリング スキームがないということでした。答えを求めてSOを調べてみたところ、これにぶつかりまし。これは良い読み物でしたが、AngularJS でモデルを構築する方法の具体的な例を実際に示してくれませんでした。

私はdjangoの開発に慣れており、明確なモデルを持つことは役に立ちます。emberjs では、Ember クラスを継承するモデルを作成する方法があるようです。また、evil-trout のブログ投稿を読んだ後、すべての変数をスコープにアタッチし、それらの多くがオブジェクトではなくプリミティブであることの潜在的な落とし穴を理解しました。

では、AngularJS でモデルを構築して、将来的に保守可能なコードを作成できるようにするための最良の方法は何でしょうか。私がAngularに固執する主な理由は、書くのが驚くほど簡単だからですが、単純化のために機能がしばしば置き換えられたphpのようなものになってしまうのではないかと心配しています.

質問が明確になったことを願っています。そうでない場合は、お気軽にコメントを残して、改善方法を教えてください。

4

2 に答える 2

7

モデルについて覚えておくべきこと

それらはデータのチャンクを表します...

  • そのチャンクは、静的ファイルである API から取得でき、明示的に宣言できます。
  • アプリ内のイベントによって更新できます。

それらは多数または1つである可能性があります...

  • モデルは、すべてを包含するオブジェクトである必要はありません。単一のモデルからより小さなモデルを抽象化する可能性がある場合は、モジュラー コードを発見したことになります。子サービスを親に注入すると、関心の分離と再利用性が保証されます。

ここでの良い例は、1 つのモデルを構築するために 2 つの API を使用するサービスについて考えることです。あなたは確かに次のようにそれを構築することができます:

angular.module('things', [])
.factory('Things', function($http) {
    var _things = {};
    _things.getThing1 = function(){return $http.get('http://ONE.com/1')};
    _things.getThing2 = function(){return $http.get('http://TWO.com/2')};
    return _things;
};

しかし、これらの API 呼び出しを別のプロジェクトで使用したい場合はどうすればよいでしょうか? 単一のサービスを構成するコンポーネントは、独自のサービスとして表現するのが本当に最適ですか?

angular.module('thing1', [])
.factory('T1', function($http) {
    var _thing1 = {};
    _thing1.getThing1 = function(){return $http.get('http://ONE.com/1')};
    return _thing1;
};

angular.module('thing2', [])
.factory('T2', function($http) {
    var _thing2 = {};
    _thing2.getThing2 = function(){return $http.get('http://TWO.com/2')};
    return _thing2;
};

angular.module('things', ['thing1','thing2'])
.factory('Things', function(T1,T2) {
    var _things = {};
    _things.getThing1 = T1.getThing1();
    _things.getThing2 = T2.getThing2();
    return _things;
};

thing1を使用したり、thing2独立したりできるようになりthingsました。あなたが取り組んでいる次のプロジェクトでthing1thing2. 少なくとも、モジュラー サービス (ま​​たは一般的なコード) はアプリに構造を提供し、BLOB ではなくコンポーネントとして物事を識別するのに役立ちます。

于 2013-08-08T15:07:02.823 に答える