Javascript中的PubSub/Loosely Coupled和MVC模式

Cou*_*uto 6 javascript model-view-controller jquery design-patterns publish-subscribe

好吧,我是这方面的新手,我一直在尝试在Javascript/jQuery中学习MVC模式和发布/订阅模式,但我相信我还没有完全掌握这个概念.

既然我一直在做这件事,我谦卑地来这里询问关于我试图按照这些模式进行的小型教育活动的意见

http://jsfiddle.net/Couto/R62V8/

好的,这个练习主要是一个登录表单,其中值保存在localStorage中,同样它纯粹是教育性的,我现在无论如何它都不安全,不应该用于生产.

您能否告诉我您对使用的模式的看法,我是否在实现模式的正确使用方面失败了?如果需要请伤害我,我只是想学习,但我不确定我是否正确行事.

Akk*_*uma 2

jQuery 的事件委托系统本身就是一种发布/订阅形式。事实上检查一下,http://bugs.jquery.com/ticket/7547。您将在幕后看到它使用事件系统,并且实际上仅更改命名方案并在“全局”上下文中工作。

我不反对发布/订阅,但觉得你添加了一个在某些情况下不需要存在的层。在事件委托触发后立即触发正确的函数而不是触发 pub 真的会更糟糕吗?如果您删除订阅和发布,您最终会得到几乎相同的代码,而不会增加“复杂性”。

在其他情况下,发布/订阅很有意义。您的显示/哈希和设置/登录很有意义,因为它们不是其他代码可以订阅/绑定的传统事件的一部分。

人们可能会提出这样的论点:通过在任何地方(包括在事件委托中)使用 pub/sub,您可以抽象出对外部代码的依赖,而无需编写自己的事件委托,从而消除了他们对将委托绑定到哪个元素的担忧。如果您正在编写大型复杂的应用程序,请继续将其抽象到该级别。如果您不打算编写大型应用程序,请权衡一下好处,因为 YAGNI 可能适用于此。