Web インタビュー: MVC と MVVM の違いと、Vue が MVVM に完全に準拠していない理由

Web インタビュー: MVC と MVVM の違いと、Vue が MVVM に完全に準拠していない理由

MVCとMVVMの違い

前述の

まず、これら2つは単なる考え、デザインパターンです

多くのプログラミング言語では、Java の SpringMVC、PHP の ThinkPHP、JavaScript の Vue、React、Angular など、この考えに基づいて多くのフレームワークが設計されています。

MVCC の

概要

1. データはビューにレンダリングされる必要がある
テンプレートエンジンの定義
データを取得する
次にデータをテンプレートエンジンにレンダリングします

2. ビューアクションコントローラ
ページ上のボタンにクリックイベントを追加する
イベント内でのメソッドの呼び出し
コントローラはデータを変更する要求を送信します

3. メソッドを通じてデータを変更するネットワークリクエストを送信する
次に、変更されたデータを取得するためにネットワークリクエストを送信します。
次にデータをビューにレンダリングします

長所と短所

アドバンテージ:

結合を減らし、コードの保守と拡張を容易にする

欠点:

データが更新されるたびに DOM を操作する必要があり、開発効率に影響します。

MVVM

概要

序文

開発効率を向上させるために、MVVM という新しいアイデアが登場しました。最大の特徴は双方向データバインディングです。

M のデータが変更されると、V のデータも自動的に変更されます。V のデータが変更されると、M のデータも自動的に変更されます。

MVVM は MVC の進化版であり、MVC の代替です。

特徴:

Mが変わると、Vも自動的に変わるVが変わると、Mも自動的に変わる

関係:

Mが変更されると、VMはMの変更を検出し、Vを自動的に変更します。

Vが変化すると、VMはVの変化を検出し、Mを自動的に変更します。

MVVH を使用すると、すべての DOM 操作が VM によって実行されるため、プログラマーの作業負荷が軽減されます。プログラマーは、DOM 操作ではなくビジネス ロジックに多くの時間を費やすことができます。

MVVM 実装者 — Vue

ここに画像の説明を挿入

Vue が MVVM に完全に準拠していないのはなぜですか?

ここに画像の説明を挿入

元の言葉はVue公式サイトの著者の声明から来ていますが、著者は理由を述べていません。私自身の調査と整理によると、理由は2つあると思います

理由 1: MVVM は「Model-View-ViewModel」を参照し、「モデル」と「ビュー」を完全に分離する必要がありますが、Vue は ref プロパティを提供しており、これを通じて DOM オブジェクトを取得し、ビューを直接操作できます。これは mvvm に違反します。

理由2:下図に示すように、構造上、「データ層」は「データモデル層」に含まれており、2つの部分は完全に独立していません。

ここに画像の説明を挿入

以上がWeb面接におけるMVCとMVVMの違いと、VueがMVVMに完全準拠していない理由の回答の詳しい内容です。MVCとMVVMの詳細については、123WORDPRESS.COMの他の関連記事にも注目してください!

以下もご興味があるかもしれません:
  • Vue.js と MVVM に関するメモ
  • Vue における MVVM 実装原理の簡単な分析
  • JavaScript フロントエンド開発の MVC と MVVM 構造についての簡単な説明
  • vue の mvvm モードの説明
  • VueにおけるMVVMの原理と実装方法の詳細な説明

<<:  UA による Web サイトのクロールを防ぐ Nginx のクローラー対策戦略

>>:  Explainキーワードに基づいてMySQLインデックス機能を最適化する方法

推薦する

ウェブアニメーションのフレームレートFPSを計算する方法

目次スムーズなアニメーションの基準方法1: Chromeデベロッパーツールを使用する方法 2: フレ...

nacos が mysql に接続できない場合の解決策

理由nacos の pom が依存する mysql バージョンが、mysql バージョンと一致してい...

CSSの使用に関する深い理解 clear:both

clear:both清除浮動これは私が常に持っていた印象ですが、私はこれをめったに使用せず、私の理...

Vue で 3D タグ クラウドを実装するための詳細なコード

プレビュー: コード:ページセクション: <テンプレート> <div class=...

MySQLの共同クエリ最適化メカニズムの詳細な説明

目次MySQL フェデレーテッド クエリ実行戦略。実行計画フェデレーテッドクエリオプティマイザーMy...

MySQL の Like の概念と使用法の説明

Like は中国語で「好き」を意味しますが、MySQL データベースに適用される場合、Like は、...

HTMLテーブルの詳細な説明

機能: データ表示、テーブルアプリケーションシナリオ。 <table> テーブル<...

JavaScript を使って簡単な計算機を書く

効果は以下のとおりです。参考プログラム: <!DOCTYPE html> <htm...

jQuery はテーブルのページング効果を実装します

この記事では、テーブルのページング効果を実現するためのjQueryの具体的なコードを参考までに紹介し...

CentOS 7.4 で MySQL 5.7.28 バイナリモードをインストールする方法

Linuxシステムバージョン: CentOS7.4 MySQL バージョン: 5.7.28 Linu...

スマートCSSを使用して、ユーザーのスクロール位置に基づいてスタイルを適用します。

現在のスクロール オフセットを html 要素の属性に追加することで、現在のスクロール位置に基づいて...

nginx で http でアクセスする Web サイトを https に変更する方法

目次1. 背景2. 前提条件https:証明書システム: 3. 操作プロセス3.1 証明書の生成3....

Windows 10 での mysql-8.0.17-winx64 のインストール方法

1.公式サイトからダウンロードして解凍する参考: ダウンロード後、zip 圧縮ファイル (mysql...

MySQL 5.7.17 のインストールと使用方法のグラフィックチュートリアル

MySQL は、スウェーデンの会社 MySQL AB によって開発され、現在は Oracle が所有...

HTML マーキー文字フラグメントのスクロール

その特性は次のとおりです。方向アクティブな字幕のスクロール方向を設定するコードは次のとおりです。 &...