0

まあ、私は基本的にノックアウトを調査し、それが提供するさまざまな機能を理解しています. テンプレートと双方向バインディングがとても気に入りました。さて、最近5月のモジュールで社内に実装されましたが、それがいかにイベント駆動型で、いかに美しいかについては非常に大きな話題になっています。

まあ、それが非常にイベント駆動型であると彼らが主張するとき、彼らはそれをJQueryに反対させます。彼らの主張は、JQuery では誰でもアクセスしてボタンの onClick をどこにでもバインドできるため、すべてのコントロールのすべてのイベントを同じ場所に保持するための標準が設定されておらず、コードの管理が難しくなると、面倒になることがあるというものです。

私の主張は、Jquery はこれを達成するためにコードの明示的な管理を必要とするかもしれませんが、イベント駆動型プログラミングは排他的なものではありませんか? asp.net の Web ページには何年もの間コード ビハインドが含まれていますが、すべての OnClick イベントを備えた古代の JavaScript を使用した従来の ASP はどうですか?

ここで何か不足していますか?

4

1 に答える 1

2

イベントは新しいものではありません.. ボタン コントロールの開始以来、何らかの形でそこにあったはずです。ただし、違いは、イベントの使用方法と、イベントの保守性です。

jQuery と Knockout では、これはイベントの問題ではなく、デザイン パターンの問題だと思います。jQuery はイベントを使用します (特定のインスタンスではより多くのコードを使用します) が、使用する特定のパターンを指定しません。一方、KnockoutJS は、双方向のデータ バインディングを備えた MVVM パターンを導入し、複雑なアプリケーションを作成するために必要な構造を提供します。

私の意見では、パターンを使用するとコードの保守性が確実に向上します。単純な jQuery を使用して MVVM、MVC、または MVP を実装することもできます。ただし、jQuery は具体的にそのように動作するように作成されていないため、もう少し努力が必要です。たとえば、MVC パターンでコードを整理できる BackboneJS を使用している場合、イベント バインディングに jQuery を使用できます。

各ライブラリには、ユースケースに応じて独自の場所があります。単純な一方向のイベント処理の場合、ノックアウト ビューモデルは必要ないかもしれませんが、jQuery を使用してクリーンアップするだけです。ただし、双方向メッセージングが多い複雑な UI の場合、ノックアウトはより少ない量のコードで処理を実行します。

他のシナリオも考えてみましょう... Knockout では、HTML をカスタム属性で改ざんする必要があります。HTML を変更できない場合はどうしますか? jQueryには、より良いユースケースがあります。jQuery、Knockout、Backbone、または BoilerplateJS をユース ケースごとに使用します。単に誰かがクールだと思うからではありません :)

于 2012-09-24T06:14:37.893 に答える