1

簡単に言えば、MVC は、コンテンツ (モデル) をプレゼンテーション (ビュー) から分離し、両方を収集する方法を定義するメカニズム (コントローラー) を配置するためのパターンです。

私がどこに行こうとしているのか、すでにお分かりでしたら、この件についてご意見をお聞かせいただければ幸いです。もちろん、MVC はサーバー側の機構などすべてに適用されますが、ここで少し考えてみましょう。

人間とロボット/Google の両方の Web の「訪問者」は、HTML とそれに付随するものを見る可能性があります。構造化された意味のある HTML を記述し、CSS を使用してそれをプレゼンテーションから分離することは、年々重要になってきており、HTML5 などの将来のテクノロジーは、よりコンテンツに焦点を当てた一連の要素と、純粋な視覚的表現。

これらすべてを考慮して、MVCパラダイムがフロントエンドにも適用されると言うのが何らかの形で正しいかどうか疑問に思っていました。

  • 純粋な httpwise コンテンツのように、モデルは HTML になります。
  • ビューは CSS です。それはあなたのコンテンツを特定の方法で提示します
  • コントローラーはウェブサーバーであり、その下にあるすべてのものであり、モデルとビューを収集して分離し、すべての意思決定を行うものです

理にかなっていますか?いいえ?

VonC は、コントローラー部分に関する私の考えを確実に変えた記事を教えてくれました。ブラウザは、大量のユーザー インタラクションと、モデルとビューの連携方法を処理するため、コントローラの主要な部分も占めています。

4

5 に答える 5

4

十分に調べれば、MVC は一般的に何にでも見つけることができます。

于 2008-11-06T10:27:29.987 に答える
1

コントローラーについて議論することはできますが、私は同意します。

Jeff はZenGardenを使った投稿でその点を説明しています。

と:

  • モデル = HTML
  • ビュー = CSS
  • コントローラー = ブラウザー (Web サーバーよりも「フロントエンド」に近い)

実際、これはクライアント側からの有効な観点です。

サーバー側(単純な html ページ サーバーよりも複雑なサーバー) から見ると、MVC は異なります。

たとえば、ASP.Net を使用します。

  • モデル = ビューまたはコントローラーに含まれていないすべてのアプリケーション ロジック。モデルには、アプリケーションのビジネス ロジックとデータベース アクセス ロジックのすべてが含まれている必要があります。たとえば、LINQ to SQL を使用してデータベースにアクセスする場合は、Models フォルダーに LINQ to SQL クラス (dbml ファイル) を作成します。
  • View = ブラウザに送信される HTML マークアップとコンテンツ、およびスクリプト
  • コントローラー = ユーザーが MVC アプリケーションとやり取りする方法を制御します。コントローラーは、ユーザーがブラウザー要求を行ったときにユーザーに返す応答を決定します。コントローラーは単なるクラスです (たとえば、Visual Basic または C# クラス)。

それはMVCのサービス側の視点です

于 2008-11-06T08:17:31.717 に答える
1

いいえ、ちょっと...

HTML はプレゼンテーション レイヤー (ビュー) にもありますが、CSS にはフォントや色などのプレゼンテーションの詳細が含まれている必要があります。

モデルにはデータとビジネス ロジックを含める必要があります。これらを HTML に格納することは望んでいません。これは、実際のプログラミング言語、ストアド プロシージャ、および DBMS が処理するためのものです。そして、これらはサーバー側にあるはずです。

しかし、あなたの考え方に従うために、次のことをお勧めします。

  • モデル: サーバー側プログラム + DBMS
  • 表示: HTML+CSS
  • コントローラー: ウェブサーバー
于 2008-11-06T08:41:17.050 に答える
1

あなたの主張は理解できますが、HTML-CSS-Server/Browser を MVC ではなく Document-Viewer として説明すると思います。すべてのコンテンツが静的である場合、それはモデルの表現であり、true ですが、モデルはマークアップに埋め込まれています。CSS でオーバーライドすることはできますが、CSS は実際には、HTML で記述された基礎となるプレゼンテーションに対するフィルターにすぎません。HTML は、データ自体だけでなく、データのビューも記述します。つまり、CSS をオフにしてもデータを表示できます。MVC では、これは不可能です。

また、HTML と CSS の間には密接な関係があります。両者は、お互いを十分に認識している必要があります。これは、コンポーネントが疎結合であるという MVC の主要なパラダイムに違反しています。特に、ビューはモデルに制約を課しません (データが表示可能であるという制限以外)。HTML デザイナーは、CSS のドメイン内で作業するか、CSS を変更して HTML のドメインに適用できるようにする必要があります。

さらに、HTML にはデータを操作して永続的な変更を加える方法がありません。このモデルの重要な側面は、ビジネス ルールを適用できることです。HTML は静的コンテンツではこれを行いません。Web デザイナーは、HTML エンコーディングの選択によって行います。

これは、それを悪くしたり、役に立たなかったりしません。すべてが MVC である必要はありません。MVC は、データとコードを編成する特定の方法を 1 つ説明するだけです。これには、分離されたアーキテクチャとテスト容易性に関していくつかの特定の利点がありますが、それが利用可能な唯一の有効なアーキテクチャ パターンであることを意味するものではありません。

私の意見では、静的な HTML コンテンツは MVC ではなく、MVC である必要もありません。

[編集] ブラウザーの設計に MVC を使用できない、またはブラウザーでの静的コンテンツの表示に MVC を適用できないと主張しているわけではありません。私はブラウザ プログラマーではなく、コンテンツ プロバイダーの観点からこれを見ています。MVC は、ブラウザーの設計にとって完全に論理的な選択になる可能性があります。

于 2008-11-06T08:51:45.517 に答える
0

CSS は間違いなくビューではありません。むしろ、ブラウザー (HTML/DOM および CSS 入力を 2D レイアウトに結合する) によるレンダリングがビューです。HTML/DOM がモデルです。コントローラーはブラウザー UI に半分組み込まれていますが、javascript で拡張できます。

コンテンツとプレゼンテーションの分離について話すとき、CSS がプレゼンテーション レイヤーと見なされるのは事実ですが、それは別の (直交する) モデルです。

MVC では、CSS は HTML/DOM とともにモデルの一部です。これは、さまざまなビューでレンダリングできる基礎となるデータであるためです。たとえば、印刷レイアウトは、同じモデルに基づく別のビューです。

于 2008-11-06T08:40:22.403 に答える