javascript - Javascript 中的 PubSub/松散耦合和 MVC 模式

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

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

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

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

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

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

最佳答案

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

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

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

有人可能会说,通过在任何地方使用发布/订阅,包括在事件委托(delegate)中,您可以抽象出对外部代码的依赖,而不必编写自己的事件委托(delegate),从而消除了他们对绑定(bind)什么元素的担忧委托(delegate)给。如果您正在编写大型复杂应用程序,请继续将其抽象到该级别。如果您不打算编写大型应用程序,请权衡 YAGNI 可能适用于此的好处。

关于javascript - Javascript 中的 PubSub/松散耦合和 MVC 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4731482/

相关文章:

javascript - ReactJS - 将 setState 与 firebase 监听结合使用

javascript - 单击切换类

javascript - 如何知道隐藏在 moz-binding 下的 XUL 元素的结构?

javascript - 替换多个链接

jquery - 如果选择长文本选项,则选择元素 100% 宽度错误(Select2 bootstrap 主题)

python - Flask 自定义登录和模板渲染

php - 在服务器上配置 php/MVC

javascript - rails 和 Backbone 一起工作

javascript - 为什么removeChild函数对于列表项和i标签的行为不同?

jQuery 工具提示显示额外的 div