Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

自打脸,开始用起 PubSub

  我之前可耻地喷过 PubSub,因为我觉得 PubSub 和 Event 是同类的东西,Event 完全可以实现 PubSub(相当于 global 对象上的 Event)。然而经过前些天在 Event 兼容实现上的踩坑,我终于意识到有时候只需要 PubSub 的功能就完全没必要去踩 Event 的坑。
  好像我经常把自己以前的观点推翻,提出个完全相反的观点?是的,这个世界上的一切信息都只能作为自己思考的参考,没有任何观点是绝对正确或永远正确,包括我现在说的这句话。关于这个话题,后续可能单独写一篇文章吧?现在言归正传,来接着扯 PubSub 和 Event 这些犊子。
  在某些项目个中,我确实只需要 PubSub 的功能。比如实现一个 Model 更新给 View 的通知,如果架构设定的 Model 总是全局的话,PubSub 就已经足以完成这个工作。前段时间我正在做的一个项目就是如此,一直在为找找不到一个能完美兼容到 ES3 的可靠 Event 实现而苦恼。虽然我之前也写过好几个版本的 Event 实现,但正如昨天的「再谈 JavaScript 的事件封装」中介绍的一样,Event 的实现在 ES5- 中没有完美的解决方案。所以我才开始重新考虑 PubSub 这东西的价值。
  实现一个 PubSub 非常简单,因为它是根据一个字符串来标识订阅与发布的主题,所有事件处理函数以主题为 key 存在全局或全局的一个闭包里即可。不需要像 Event 一样考虑如何将事件处理函数存到某个对象上。
  其实我也不算全盘否定掉以前的观点吧(这不是诡辩)?我依然觉得 PubSub 只是 Event 的一种特殊形态而已。只是残酷的现实逼迫我放弃 Event 的实现而改用 PubSub。如果只考虑 ES6+,那我依然会毫不犹豫地选择 Event。
网名:
3.80.55.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^