javascript - Knockout 完全是事件驱动的吗?

标签 javascript jquery .net knockout.js

嗯,我基本上是在探索 knockout 并了解它所提供的不同功能。我真的很喜欢这些模板和双向绑定(bind)以及一些观察。现在,它最近在我们公司的许多模块中实现了,但是关于它是如何事件驱动的以及它是多么美丽,有一个非常大的讨论。

好吧,当他们认为它是非常事件驱动的时,他们将其与 JQuery 进行比较。他们的论点是,在 JQuery 中,任何人都可以在任何地方绑定(bind)按钮的 onClick,有时当没有设定标准将所有控件的所有事件保留在同一位置时,它会变得困惑,并且使代码难以管理。

我的论点是,Jquery 可能需要显式管理代码来实现此目的,但事件驱动编程不是排他性的吗? asp.net 网页拥有它,其代码隐藏多年,那么经典 ASP 与古老的 JavaScript 及其所有 OnClick 事件又如何?

我在这里遗漏了什么吗?

最佳答案

事件并不是什么新鲜事。自从按钮控件诞生以来,它就应该以这样或那样的方式存在。但不同之处在于事件的使用方式以及事件的可维护性。

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

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

每个库都有自己的位置,具体取决于用例。对于简单的单向事件处理,您可能不需要 knockout View 模型,而只需使用 jQuery 来完成。但对于具有高双向消息传递的复杂 UI,Knockout 可以用更少的代码完成任务。

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

关于javascript - Knockout 完全是事件驱动的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12559344/

相关文章:

c# - 任何现有的 .Net 有序集?

c# - 当我想继承和添加属性时如何处理密封类

.net - Windows 托管的 WCF 服务可以使用 HTTPS 吗?

javascript - jquery ajax请求如何获得成功?

javascript - 为什么这些 slider 按钮不起作用?

javascript - 如何从单个表单元素内的多个字段集中获取输入字段(包括选择、文本区域)的所有值?

javascript - 调试 badaWAC 应用程序

javascript - 仅上传特定格式文件的条件

javascript - Socket.io 创建一个单独的事件处理程序文件

javascript - 你如何制作加载符号