6

Microsoft が Web アプリケーション用の REST インターフェイス + クライアント側 JavaScript ベースの MVVM 開発に向けてどのように動いているかについての興味深い記事を読みました。

2 つのモデルの基本的な違いは技術的には理解できますが、Web アプリケーションの作成方法と、最も重要なこの新しいモデルに適切に移行する方法に関する意味については、完全に混乱しています。

そのため、従来の ASP.NET MVC から WebApi + KO に移行する場合、次の疑問が生じます。

  • MVC + KO を使用して、目立たない、またはほとんど目立たない (つまり、最小限のコード) 検証を行う方法はありますか?
  • UI コードの単体テストを行うにはどうすればよいでしょうか。
  • ブラウザーの互換性は KO で損なわれますか?
  • あるモデルから別のモデルに移行する際に、他に考慮しなければならないことはありますか?
4

2 に答える 2

5

これは、ノックアウト サイトで「目立たないように」することの長所と短所についての非常に優れた議論であることがわかりました。

伝統的に、私は Javascript をできるだけ目立たないようにすることを非常に支持しており、私の Knockout 式では、面倒な作業をビュー モデルの関数に移し、DOM をカプセル化するカスタム バインディングを作成することで、Javascript をできるだけ最小限に抑えて整理するようにしています。ロジック - しかし、賢明に使用する場合、宣言的アプローチ自体 (data-bind 属性を使用するデフォルトなど) が進むべき道であるという意見を固く信じています。

おそらくそれは、Knockout の紹介が、私が取り組んだ WPF アプリケーションの Web アプリケーション "ポート" であり、Knockout をうまく活用する方法を学ぶにつれて、私のサイトの Knockout バインディングが XAML の同等物に驚くほど近くなってきているためです。マークアップに注目して、ビューがどのように評価されるかに関する実際のビジネス ロジックを一目で確認できるのが大好きですファイル。

多くの手続き型 jQuery を利用して物事を接続する従来の MVC サイトのいくつかを再訪すると、マークアップはきちんと整理されていると思いますが、6 か月後にマークアップに戻っても、これらすべての jQuery で自分の意図が何であったかを理解するのは困難です。セレクター、コールバック、および DOM トラバーサル。必要な場合、つまり、バインディング ロジック自体が動的である状況があった場合にのみ、Knockout バインディング自体を動的に適用すると思います。

これは、あなたの質問の目立たない側面に対する私の 2 セントです。MVVM Javascript への移行の経験が、過去数か月にわたる私のようなものである場合、振り返ることはありません。

于 2012-07-14T10:50:41.663 に答える
5

Microsoft がこの "シングル ページ Web アプリ" を推進し始めているのは、部分的にはユーザー エクスペリエンスを向上させるためですが、主な理由としては、Web アプリを Windows 8 ネイティブ アプリケーションに移行することがはるかに簡単になるためです。

Re: 検証のための控えめな JavaScript …Knockout を使用している場合、UI とスクリプトは基本的なものだけでも非常に緊密に結合されるため、目立たないようにすることは実際には有効な目標ではありません。Knockout で検証を行うことはできますが (たとえば、https://github.com/ericmbarnard/Knockout-Validation#readmeを参照)、ASP.NET MVC と同じ定義では控えめではありません。

Re:単体テスト... https://stackoverflow.com/questions/6331789/knockoutjs-unit-testing-with-qunitをご覧ください

Re: ブラウザーの互換性... JavaScript を無効にしているクレイジーなユーザーがいない限り、最新のブラウザーとの互換性の問題は認識していません。

于 2012-07-13T19:07:14.760 に答える