Knockout完全由事件驱动吗?

时间:2012-09-24 05:32:48

标签: javascript jquery .net knockout.js

好吧,我基本上是在探索淘汰赛并了解它所提供的不同功能。我真的很喜欢模板和双向绑定与它的一些观察。现在,它已经在我们公司最近为may模块实现了,但是关于事件驱动它是如何以及它是多么美丽有一个非常大的讨论。

好吧,当他们认为它是由事件驱动时,他们会反对JQuery。他们的论点是,在JQuery中,任何人都可以进入并在任何地方绑定按钮onClick,当有没有设置标准来保持所有控件在同一个地方的所有事件并且它使代码难以管理时,它会变得混乱。

我的论点是,Jquery可能需要对代码进行显式管理才能实现这一目标,但事件驱动编程并不是排他性的? asp.net网页拥有它的代码背后多年以及如何使用古老的JavaScript及其所有OnClick事件的经典ASP?

我在这里遗漏了什么吗?

1 个答案:

答案 0 :(得分:2)

好事件不是新的..自从按钮控件开始以来,它应该以某种方式存在。但不同之处在于如何使用事件以及您可以如何维护。

在jQuery和Knockout上,我不认为这是事件的问题,而是设计模式的问题。 jQuery,使用事件(在某些情况下是更多代码)但它没有指定要使用的特定模式。另一方面,KnockoutJS引入了具有双向数据绑定的MVVM模式,这将为您提供编写复杂应用程序所需的结构。

在我看来,使用模式肯定会增强代码的可维护性。您甚至可以使用普通的jQuery实现MVVM,MVC或MVP。但这需要更多的努力,因为jQuery没有专门用于此类工作。例如,如果您使用BackboneJS,它将允许您在MVC模式上组织代码,那么您可以使用jQuery进行事件绑定。

根据用例,每个库都有自己的位置。对于简单的单向事件处理,您可能不需要淘汰视图模型,但只需使用jQuery清理它。但对于具有高双向消息传递的复杂UI,淘汰赛将使用较少量的代码执行操作。

采取其他方案...... Knockout需要您使用自定义属性来篡改HTML。如果更改HTML不适合您,该怎么办? jQuery有一个更好的用例。根据用例使用jQuery,Knockout,Backbone或BoilerplateJS ..不仅仅是因为有人认为它很酷:)