【问题标题】:Where do you put your knockoutjs observable extensions你把你的 knockoutjs 可观察扩展放在哪里
【发布时间】:2013-07-01 12:42:37
【问题描述】:

当您将 knockoutjs 与 requirejs 一起使用并遵循 MVVM 模式并实现这样的 knockoutjs 数组扩展时,您将其放在哪里?

直接在使用它的ViewModel中?

或者在像 ObservableExtensions.js 这样的额外 javascript 文件中,然后像使用自定义绑定处理程序那样注入 requirejs?

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

};

【问题讨论】:

  • 就我个人而言,我总是将这些类型的东西放在单独的文件中(如绑定),而不是放在特定的视图模型中。

标签: unit-testing mvvm knockout.js requirejs


【解决方案1】:

就像@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)以添加更多功能。这可能看起来需要单独加载很多文件,但使用目前的捆绑和缩小工具,在生产中您几乎不会注意到。

【讨论】:

    猜你喜欢
    • 2010-11-14
    • 1970-01-01
    • 1970-01-01
    • 2012-10-14
    • 2011-03-18
    • 2010-09-11
    • 1970-01-01
    • 1970-01-01
    • 2012-11-25
    相关资源
    最近更新 更多