0

私はかなり長い間 Web に取り組んできましたが、「ベスト プラクティス」が進化するのを見てきました。私は今、HTML (コンテンツ)、Javascript (動作)、および CSS (UI) を分離することが最善の方法であるとかなり確信しています。

数か月前、私は knockout.js を使い始めました。私が従った MVC トレーニングの章がノックアウトについてであり、その概念が私を誘惑したため、backbone や angular のような他の同様のフレームワークの中からそれを選択しました。次に、Web で簡単に比較したところ、私のニーズに合わせて、また最初から悪い選択ではないように見えました。

しかし、ここに私の問題があります。プロジェクトで数週間の開発を行った後、HTML コードを見ると、かなり多くのノックアウトバインディングが含まれており、昔のことをよく考えさせられます。少なくとも私は、onclick属性などを介してインライン JavaScript イベント処理を配置していました。

したがって、これらの 2 つの質問は、SO に 100% 適しているかどうかはわかりませんが、質問するためのより良い StackExchange サイトが見つかりません。

  1. ノックアウト (または基本的にすべて同じパターンで動作するように見える他のフレームワーク) を使用することは、「分離ルール」に反していますか? それとも、このルールからの許容可能な小さなステップアウトですか? または、「data-」属性を使用しているため、完全に受け入れられますか?

  2. これがどういうわけか悪い習慣になる場合、たとえばjQueryを使用してコントロールを選択し、それらにバインディングを適用して、別のjavascriptファイルを介してすべてのバインディングを行う可能性はありますか? ノックアウトで無理なら他のフレームワークで?認めざるを得ないのは、私が選択を行った時点では、この種の影響については考えていませんでした...

これを別の SE サイトに移動する必要がある場合は、ありがとうございます。申し訳ありません。

4

3 に答える 3

1

KnockoutJS にも同じ懸念があることを誰もが学び始めたと思います。

IMHO、モデル(JSオブジェクト)をビュー(HTMLマークアップ)に接続する方法が必要です。次に、「そのボタンがクリックされたとき、その引数でこの関数を呼び出します」という何かが必要です。または「JS配列が空である間、この要素を非表示にする」など。では、その接続を読みやすく、再利用可能で、きれいな方法でどのように配置/発言/述べることができるでしょうか。

その接続を処理するために別の JS ファイルを使用した場合は、接続ロジックを配置するためだけに大量のコード行が必要になり、ターゲットとする DOM 要素を選択する方法を知る必要があります。HTML を動的で生き生きとしたものにするためだけに、大量のコード (おそらく大量の jQuery) を作成することになります(ほとんどの開発者は何度もそれを経験したに違いありません)。私は他のライブラリやフレームワークを使用していませんが、それらは大量のコードをより整理するだけだと思います.

一方、KnockoutJS の使用Declarative Bindingsにより、これはモデルとビューの間のリンクです。より読みやすく、プラグイン/プラグアウトが簡単で、優れた JS モデル オブジェクトの作成に集中できます。

分離を本当に確認するには、モデルを変更する必要があるとしたら、ビューにどれだけの変更を加える必要があるかを考えてみてください。およびその逆?

于 2013-12-04T12:07:27.707 に答える