0

好吧,我基本上是在探索淘汰赛并了解它必须提供的不同功能。我真的很喜欢模板和两种方式的绑定,并对其进行了一些观察。现在,它最近在我们公司为可能的模块实现了,但是关于它是如何被事件驱动的以及它是多么美丽,这是一个非常大的话题。

好吧,当他们争辩说它是非常受事件驱动的时候,他们将它与 JQuery 相提并论。他们的论点是,在 JQuery 中,任何人都可以进来并将按钮的 onClick 绑定到任何地方,有时当没有将所有控件的所有事件保存在同一个位置的设定标准时,它会变得混乱,这使得代码难以管理。

我的论点是,可能是 Jquery 需要显式管理代码来实现这一点,但事件驱动编程不是专有的吗?asp.net 网页拥有它的代码多年,经典的 ASP 和古老的 JavaScript 以及它的所有 OnClick 事件怎么样?

我在这里错过了什么吗?

4

1 回答 1

2

好吧,事件并不新鲜。自从按钮控件出现以来,它就应该以一种或另一种方式存在。但不同之处在于事件的使用方式以及您的可维护性。

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

在我看来,使用模式肯定会增强代码的可维护性。你甚至可以用纯 jQuery 实现 MVVM、MVC 或 MVP。但这需要更多的努力,因为 jQuery 并不是专门为此工作的。例如,如果您使用 BackboneJS,它可以让您按照 MVC 模式组织代码,并且您可以使用 jQuery 进行事件绑定。

每个库都有自己的位置,具体取决于用例。对于简单的单向事件处理,您可能不需要淘汰视图模型,而只需使用 jQuery 进行清理即可。但是对于具有高双向消息传递的复杂 UI,淘汰赛将用更少的代码完成工作。

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

于 2012-09-24T06:14:37.893 回答