web-dev-qa-db-ja.com

AngularJSは本当にMVCですか?

AngularJSホームページ —具体的には「コントロールの追加」の例を調べています。それがMVCパターンにどのようにマッピングされるのかよくわかりません。

テンプレート(index.html)がビュー、todo.jsからコントローラーとしてTodoCtrlによって構築されたオブジェクトと見なすことができることは多かれ少なかれ明らかですが、モデルはどこにありますか? ng-modelのような属性は、フレームワークの一部の内部部分にマップされ、モデルと呼ぶことができるオブジェクトを直接公開しません。

AngularJSをMVCフレームワークと呼ぶのは正しいですか?

26
Paul Lysak

属性は、コントローラーで定義されているスコープ変数にマップされます。たとえば、ビジネスロジックを表すJSオブジェクトがいくつかある場合、それらをスコープ変数に配置すると、スコープ変数の任意の値ではなく、属性をモデル自体にマップできます。

3

MVCの背後にある中心的な考え方は、データの管理(モデル)、アプリケーションロジック(コントローラー)、およびユーザーへのデータの提示(ビュー)をコードで明確に分離することです。ビューは、モデルからデータを取得してユーザーに表示します。ユーザーがクリックまたは入力してアプリケーションを操作すると、コントローラーはモデル内のデータを変更することで応答します。最後に、モデルはビューに変更が発生したことを通知して、表示内容を更新できるようにします。 In Angular applicationsviewはドキュメントですオブジェクトモデル(DOM)、controllersはJavaScriptクラスであり、modelデータはオブジェクトプロパティに格納されます。

22
Reza

私はAngularについて読んだことがありません。ただし、「真の」MVCとは、モデルにビジネスロジックが含まれ、コントローラーがユーザー入力のモデルへの通信を処理し、ビューがモデルから独自のデータを取得することを意味することに注意してください。いわゆるMVCフレームワークの多くは、実際にはMVCを正しい方法で実装していません。ビューの更新もコントローラーに責任を持たせるなど、多くの責任を負ってコントローラーに過負荷をかけています。それはコントローラーが意図したことではなく、そのような場合、いわゆる「ファットコントローラー」を取得します。多くのWeb開発者の間では、ビューは単なる「テンプレート」であるという誤解があります。これは真と偽の両方です。これはテンプレートですが、コントローラーを介さずに、モデルから直接独自のデータを取得します。

しかし、私が言い始めたように:私はまだAngularについて読んでいませんが、あなたは自分で読んでいるかもしれません、そしてあなたはAngularが本当にMVCフレームワークであるかどうかを知ることができるはずですフレームワークのさまざまなコンポーネントが行います。

6
user1628524

オブジェクトにデータを格納できるものがモデルと見なされる場合、すべてのフロントエンドフレームワーク(ビュー)がモデルを持っていると見なすことができます。それらはすべてオブジェクトにデータを格納し、ビューに表示できます。 angular mvcを呼び出すことは、実際にはマーケティング戦略であり、angularをそれ以上のもののように見せようとすることだと思います。

参照: https://www.pluralsight.com/blog/software-development/tutorial-angularjs-mvc-implementation

コントローラーでは、ここで、モデルとしての角度の例を示します。永続データの保存を支援できない場合、それはあまりモデルではありません。

2
user3738936