0

ノックアウトjsをrequirejsで使用し、MVVMパターンに従って、そのようなノックアウトjs配列拡張を実装する場合、これをどこに配置しますか?

それが使用されているViewModelで直接?

または、ObservableExtensions.js のような追加の JavaScript ファイルで、requirejs を注入するのと同じように、カスタム バインディング ハンドラーを使用しますか?

ko.observableArray.fn.doSomething = function(other) {

};
4

1 に答える 1

0

@RP Niemeyer がコメントしたように、個別のバインディング、拡張機能、およびビュー モデルも配置しました。その理由は、フロント エンド コードのよりモジュール化された設計が可能になるからです。いつ機能を再利用する必要があるかわかりません。また、バインディング、拡張機能、およびビュー モデルが相互にどのように相互作用するかをテストせずに、個別の単体テストを記述して、可能な限り最小の単位に分割することもできます。

\js
\js\tests
\js\tests\knockoutExtensionTests
\js\tests\jqueryExtensionTests
\js\tests\firstBindingTest.js
\js\tests\secondBindingTest.js
\js\tests\firstVmTest.js
\js\tests\secondVmTest.js
\js\extensions
\js\extensions\knockoutExtension.js
\js\extensions\jqueryExtensions.js
\js\bindings
\js\bindings\firstBinding.js
\js\bindings\secondBinding.js
\js\viewmodels
\js\viewmodels\firstVM.js
\js\viewmodels\secondVM.js

また、機能を追加するために jQuery などの別のライブラリをいつ拡張する必要があるのか​​ わからないため、ノックアウト拡張機能のみに限定しません。これは、個別にロードするファイルがたくさんあるように見えるかもしれませんが、現在出回っているバンドルおよび縮小ツールを使用すると、本番環境ではほとんど気付かないでしょう。

于 2013-07-03T21:32:08.520 に答える