2

背景:私は、ビューをビューモデルから分離するためにすべてのプロジェクトでMVVMを使用する必要がある.Net環境から来ました。自分のPHPプロジェクトに取り組んでいるので、同じデザインを使用して、ビューとビューモデルを分離することにしました。

そのため、ビューではビューモデルオブジェクトを作成し、必要に応じてバックグラウンド関数を呼び出します。ビューでは、コードは表示を提供するためだけのものです。

例:

view.php

<?php
include('viewmodel.php');

$vm = new viewmodel.php();

if(some condition)
{
  $vm->doSomething();
}
?>
<html>
<body>
//some form code
</body>
</html>

viewmodel.php

<?php
//includes

class viewmodel
{
  function viewmodel()
  {
  }

  function doSomething()
  {
  }
}
?>

jQueryを学習したので、jQueryを使用してページをより動的にし、サーバーとの間のトラフィックを減らし、ページを更新する必要性を減らしたいと考えています。

jQueryがいくつかの投稿データを含むphpページを呼び出すことを可能にするこのような呼び出しを見てきました:

$.ajax({ url: '/my/site',
         data: {action: 'test'},
         type: 'post',
         success: function(output) {
                      alert(output);
                  }
});

ただし、これはオブジェクト指向デザインではなくなったため、これを機能させるには、ビューモデルからすべてのクラス定義を削除する必要があります。

jQueryがビューモデルを呼び出す方法はありますか?それともjQueryを使用するということは、手続き型プログラミングに戻らなければならないということですか?

4

1 に答える 1

4

ただし、これはもはやオブジェクト指向設計ではなく、ビューモデルからすべてのクラス定義を削除する必要があります。

何があなたをそう思わせたのですか?サーバーへの AJAX 要求の作成に関して、本質的にオブジェクト指向または非オブジェクト指向というものはありません。また、これらのクライアントからの要求は、サーバー側コードのアーキテクチャには影響しません。

ビューには、任意の JavaScript コードを含めることができます。ビューをレンダリングするサーバー側のコードに違いはありません。JavaScript は、関連する限り単なるテキストであり、HTML と何ら変わりはありません。

サーバー側ハンドラーに関しては、おそらくやりたいことは、jQuery コードによって呼び出される「ページ」(「リソース」の方が正確な言葉です) 用にまったく新しいビューとビューモデルを作成することです。

そのため、たとえば、ブラウザーから、適切な/my/siteアーキテクチャを使用して、viewmodel にデータを入力してビューにバインドし、そのビューをクライアントに返すような要求を取得する場合があります。そのビューには JavaScript コードが含まれ、その一部は別のリソースを呼び出します。/api/products他のリソースは、ユーザーが利用できる「製品」のリストを返すようなものだとしましょう。

apiではなく、別のパスにリソースを配置したことに注意してくださいmy。これはかなり恣意的な決定であり、この場合に返されるのは「ページ」ではなく、自動化された API の JSON データであることを示すためだけに使用されています。もちろん、リソースの実際の名前は好きなものにすることができます。

このリソースは引き続きビューであり、viewmodel にバインドできますが、この場合、ビューは HTML ではなく JSON データです。何でもそうですが、これを行う方法はたくさんあります。Google で簡単に検索すると、JSON データを生成するためのいくつかの方法の違いに関する別の質問が見つかりました。実際、この場合の「ビュー」は完全に空である可能性があり、ビューモデルを JSON にシリアル化して返すだけです。(私の PHP はかなり錆びていますが、ASP.NET MVC と同等のものはActionResultJson()代わりに ofを返すことですView()。)

サーバー側のコードの観点からは、HTML でビューを返すことと、JSON (または XML、生のテキストなど) でビューを返すことに違いはないことに注意してください。ビューはビューであり、それぞれが他から独立しています。

于 2012-12-19T13:44:45.900 に答える