【问题标题】:PubSub/Loosely Coupled & MVC patterns in JavascriptJavascript 中的 PubSub/松耦合和 MVC 模式
【发布时间】:2011-06-11 12:22:46
【问题描述】:

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

由于我是一个人做的,所以我很谦虚地来这里就我尝试按照这些模式进行的一个小型教育练习征求意见

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

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

能否请您告诉我您对所使用模式的看法,我是否未能正确使用模式?如果需要请伤害我,我只是想学习,但我不确定我是否做得对。

【问题讨论】:

  • 我认为这样的问题可能更适合codereview.stackexchange.com 或programmers.stackexchange.com。
  • 你可能想检查backbone.js
  • @Pablo Fernandez 如果你注意到我的例子,backbone.js 代码的一部分...我知道;)
  • @gnarf 如果您注意到我使用的 pubsub gist 与 rmurphey 相同,我在写这个问题之前阅读了她的博客文章 =)

标签: javascript jquery model-view-controller design-patterns publish-subscribe


【解决方案1】:

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

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

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

有人可以提出这样的论点,即通过在任何地方使用 pub/sub,包括在事件委托中,您可以将您对外部代码的依赖从必须编写自己的事件委托中抽象出来,这消除了他们对绑定什么元素的担忧委托人。如果您正在编写大型复杂的应用程序,请继续并将其抽象到该级别。如果您不打算编写大型应用程序,请权衡 YAGNI 可能适用的好处。

【讨论】:

  • 我很久以前就问过这个问题。我自己来学习答案,同时继续使用带有 pubsub 的 MVC 模式......事实上,你在那个例子上是对的(实际上这不是最好的)。但是,您的回答非常具有解释性。感谢您的宝贵时间 =)
猜你喜欢
  • 2017-05-09
  • 2010-10-22
  • 2013-05-06
  • 1970-01-01
  • 2013-12-25
  • 1970-01-01
  • 2016-11-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多