2013-07-03 63 views
0

當你用requirejs使用knockoutjs並且遵循MVVM模式,並且你實現了這樣一個knockoutjs數組擴展,你把它放在哪裏?你在哪裏把你的knockoutjs可觀察的擴展

直接在ViewModel中使用它?

或者在像ObservableExtensions.js這樣的額外JavaScript文件中,並且像使用自定義綁定處理程序那樣使用requirejs進行注入?

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

}; 
+0

個人而言,我總是將這些類型的東西放入單獨的文件(如綁定)中,而不是使用特定的視圖模型。 –

回答

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來添加更多的功能。這可能看起來像很多文件來單獨加載,但目前捆綁和縮小工具已經存在,在生產中你幾乎不會注意到。