当你使用knockjj和requirejs并遵循MVVM模式并实现这样的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这样的库来添加更多功能。这可能看起来像是单独加载的大量文件,但目前使用捆绑和缩小工具,在生产中你几乎不会注意到。