10

私はMVVMを読んでいて、これまでのところ非常に興味深いと感じています。ただし、私が見つけた例のほとんどは、Webアプリではなく、Windowsアプリ用です。また、Silverlightで使用されるMVVMについて多くの言及があり、SilverlightはWebアプリまたはWindowsアプリのいずれにも使用できることを知っています。

だから私の質問は-MVVMはWebベースのアプリの有効なパターンですか?そうである場合、UIはSilverlightである必要がありますか?私は、新しい中規模のWebサイトにどのテクノロジーを使用して設計する必要があるかを決定している最中です。舞台裏で何を使用するかは問題ではありませんが、Silverlightは権力者に売り込むのは難しいかもしれません。そんなに。

Web環境でMVVMを使用する際に誰でも提供できる情報をいただければ幸いです。サンプルコードも素晴らしいでしょう。

4

10 に答える 10

13

DotVVMは、Knockout JS に基づくオープン ソースの ASP.NET ベースの MVVM フレームワークです。使い方は簡単で、大量の Javascript コードを記述する必要はありません。ほとんどのシナリオでは、C# と HTML と CSS のみが必要です。

ビューは次のようになります。これは、サーバー コントロールとデータ バインディングで拡張された HTML です。

<div class="form-control">
    <dot:TextBox Text="{value: Name}" />
</div>
<div class="form-control">
    <dot:TextBox Text="{value: Email}" />
</div>
<div class="button-bar">
    <dot:Button Text="Submit" Click="{command: Submit()}" />
</div>

ビューモデルは、次のような C# クラスです。

public class ContactFormViewModel 
{
    public string Name { get; set; }
    public string Email { get; set; }

    public void Submit() 
    {
        ContactService.Submit(Name, Email);
    }
}

IntelliSense とプロジェクト テンプレートを追加するVisual Studio 拡張機能もあります。

このフレームワークは、検証、ローカリゼーション、SPA、およびその他の頻繁に使用される機能を処理します。.NET Framework と .NET Core の両方をサポートしています。

于 2015-10-11T13:35:17.030 に答える
8

もちろん、MVVM は有効な「Web」パターンですが、現在のところ用途は非常に限られています。

MVC と MVVM の主な違いは、アプリケーション データの更新にあります。現在の Web アプリケーションでは、MVC が好まれます。これは、Web はほとんど一方向の通信であり、すべてのユーザー入力がフォームにカプセル化されているためです。

MVVM は、リッチな UI を備えた本当にインタラクティブなアプリケーションを作成するときに役立ちます。

簡単にするために。ASP.NET (またはその他のサーバー側指向の技術) を使用して Web ソリューションを構築する場合は、MVC を使用してください。MVVM を使用してリッチ UI アプリケーションを作成している場合、Silverlight が気に入らない場合は、Javascript ソリューションの KnockoutJS を試してください。

于 2012-01-03T09:13:23.007 に答える
6

MVVMは、WebおよびXAMLベースのテクノロジーでうまく機能します。XAML techは、組み込まれているすばらしいバインディング機能に優れています。ただし、Knockout(優れた機能)やJsViews / JsRender(JsViewsがベータ版になったら調べる必要があります)などのJavaScriptライブラリを使用します。

具体的に答えると、はい、WebアプリでMVVMを実行できます。いいですか?はい、Knockout(http://knockoutjs.com)のようなライブラリを使用している場合は可能です。MVVMの鍵は、次のような単純な分離パターンにあります。

  1. ビュー(ページ)を分離します
  2. モデル(生データ)を分離します
  3. ビューモデルを分離します(プレゼンテーションロジック)

MVVMによって規定されたテクノロジーはどこにもありません。ビューはあなたのhtml、あなたの構造です。モデルはデータ(おそらくJSON)です。ビューモデルは、特定のビューのロジックを分離するjavascriptオブジェクトです。

Knockoutは、オブザーバブルと呼ばれる概念を通じて、今日のデータバインディングの手段を提供します。基本的に、これはINotifyPropertyChangedインターフェイスのように考えますが、JavaScript用です。Knockoutは、observableArray(XAMLのObservableCollectionに似ています)もサポートします。Knockoutには、データ変更イベントのサブスクライブ、ビヘイビアーの作成、カスタムバインディングなどを可能にする他の多くの機能があります。とにかく...ノックアウトを使用すると、かなりの量が得られます。

KnockoutなどのライブラリなしでMVVMを実行することを選択した場合でも、それを実行できますが、データバインディング機能が失われ、おそらく自分で何かを書きたいと思うでしょう。しかし、私はあなたのためにこれを行うライブラリに固執することを強くお勧めします。

長い答え...しかし、私はあなたに十分に探求を始めることを与えたかった。

于 2012-01-04T02:23:51.200 に答える
4

Web web(html) の場合、mvvm のポイントはインターフェイスにビューモデルの変更をすぐに反映させることであるため、実際には使用できません。(データバインディング/イベント経由)。

Web の場合、viewmodel の変更は通常、ポスト + 画面の完全な再構築です。
それでは、なぜわざわざ..

ただし、1 つの固定 HTML ページを持つ AJAX Web サイトがあり、そのコンテンツが JavaScript で継続的に更新されている場合。すると面白くなります。

于 2010-08-07T05:47:44.620 に答える
3

MVVM は基本的に、Windows Presentation Foundation を使用したアプリケーションの開発をサポートするために特定の変更を加えた MVC パターンです。

モデル - ビュー - ビュー
モデル モデル - ビュー - コントローラー

したがって、ViewModel は MVVM のコントローラーです。パターンはとても良いです。シンプルでありながら強力で、テストと保守が容易なアプリケーションを非常に簡単に構築できます。

Silverlight 以外の Web アプリケーションで MVVM を使用する場合は、ASP.NET MVCを調べてください。Silverlight を使用している場合は、MVVM もオプションです。この 2 つを組み合わせて、MVC Web サイトで Silverlight アプリをホストすることもできます。

于 2010-08-06T13:43:44.850 に答える
2

MVVM は Web 開発に完全に受け入れられます。実際、Silverlight 開発に推奨されます。当社では、多くのプロジェクトで MVVM + Silverlight を使用して大きな成功を収めています。最初の学習曲線は難しい場合がありますが、一度クリックすると、多くの利点が得られます.

私の意見では、MVVM を実際に機能させるには、適切なバインディングをサポートするフレームワークが必要です。そうしないと、ビューとビュー モデルを結合するために多くの「接着」コードを作成する必要があります。Silverlight は優れたバインディング サポートを備えており、適切に実行すれば、ビュー内のコード ビハインドのほとんどを排除できるため、すべてのビジネス ロジックが ViewModel 内にそのまま残ります。

Tim Heuer には、Silverlight を使用した MVVM に関する優れたチュートリアルとビデオがあります。彼の作品を読むことを強くお勧めします。 http://timheuer.com/blog/articles/getting-started-with-silverlight-development.aspx

于 2010-08-06T13:38:24.847 に答える
1

Web 開発では、むしろ MVC を選びます。純粋にSilverightの場合、MVVMを検討できます

于 2010-08-06T13:43:57.323 に答える
1

Knockout、jQuery、Websockets、.NET などのさまざまなテクノロジを使用して、Web 用に MVVM を実装しています。こちらの記事をご覧ください: http://salmanq.com/blog/using-the-mvvm-pattern-on-web-applications-part-i/2013/02/

于 2013-03-06T19:09:04.230 に答える
0

MVVM は、WPF と Silverlight で完全に受け入れられます。Web 開発に MVVM を使用する場合は、大量の jscript コードを作成する必要があります。これを行う方法については、MSDN にサンプルがあります。

以下のリンクを確認してください: http://msdn.microsoft.com/en-us/scriptjunkie/hh297451

于 2011-10-18T22:05:09.250 に答える
0

前述のように、Knockout.jsは Web 上の MVVM に必要な多くの機能を提供する素晴らしいライブラリです。より完全な MVVM フレームワークである複合フレームワークを作成しました。これは Microsoft の Prism と類似しており、Web およびモバイル プラットフォームをターゲットとするかなり大規模で複雑な製品で使用されています。

それをチェックしてください:http: //danderson00.blogspot.com/2012/08/introducing-knockoutcomposite.html

于 2013-01-16T03:27:18.370 に答える