Open5

完全に理解したと思ってたMVC,MVP,MVVM全然理解してなかった件

おすしおすし

それぞれの違いとメリデメとなんでCがPになったりVMになったりしてるのかとそれぞれの役割を理解したみだったのでまずはMVCとMVPの違いとかメリットについて↓

https://qiita.com/reo0612/items/1180cb2d7dd50d23ced3
によると
MVCとMVPはModelとControllerの間にPresenterが入ってて、それはControllerがfatにならないようにというのはわかった

これはユーザの入力をコントローラが受け取り、入力値によってモデルとされているビジネスロジックを実行させます。
結果としてモデルに変化が起き、その変化をビューが受け取ります。ビューはオブザーバーとしてモデルの変化を監視しています。
なお、いわゆる MVC フレームワークはこれとは異なります。
MVC フレームワークではコントローラがビューを描画します。
このため、原初の MVC を古典的 MVC、MVC フレームワークのような形を MVC2 と呼ぶことがあるようです。

おすしおすし

Modelはビジネスロジックかくところ、Viewはユーザーのアクションを検知して他の役割に伝えるところ、MVCのCではViewから検知されたらAPI叩いて、ModelからデータをいただいてViewにお知らせする。MVPでのPはCの仕事を丸っと引き受けてるPresenterとViewの間にControllerが挟まってる感じ。ふむ。(完全に自分ようメモ...)

おすしおすし

https://qiita.com/os1ma/items/7a229585ebdd8b7d86c2
この記事によると3層アーキテクチャとMVCは別物らしい

3層アーキテクチャ

ビジネスロジック層・・・ルール書く
データアクセス層・・・じゃんけんの結果を保存する(DBらへんのこと?)
ユーザーとのやりとり・・・プレゼンテーション
MVPにもMVCにも当てはまらなくて困惑...してたけど

実は、MVC、MVP、MVVM といったものは、全てプレゼンテーション層> のアーキテクチャなのです。

ということらしい。なぁるほど。Mはビジネスロジック層だけど。

おすしおすし

MVVM

MVPとかだとだとAPI叩いた結果をModelから持ってくるけど、データが変わると、C(Controller)やP(Presenter)の位置にあるView Modelの値が変化し、自動的にViewの値も変化する

データバインディングを行うMVVMは、Viewの変更があっても、Modelで変更があっても、お互いに更新を反映する機能を持っている。
MVVMを採用できるJavaScriptのフレームワークで代表的なものはAngularやVue.js。
https://digitalidentity.co.jp/blog/creative/mvc-mvvm.html