【问题标题】:Javascript Publish and Subscribe - How to avoid magic stringsJavascript 发布和订阅 - 如何避免魔术字符串
【发布时间】:2012-07-26 20:30:10
【问题描述】:

在使用松散耦合的 Javascript 模块(在 Web 浏览器中)使用 Pub/Sub 库时,是否有任何模式可以说明如何避免使用魔术字符串作为事件名称?

我正在使用 require.js 和 amplify.js 来开发基于模块化的 Web 应用程序。我正在使用放大来发布和订阅事件,但这当然要求发布者和订阅者都知道事件标签是什么。我想避免对这些事件标签使用魔术字符串。我在想每个模块都会有一个关联的“eventsList.js”文件,或者类似的东西会列出模块将发布的事件。对于任何想要订阅其他模块事件的模块,它会为每个感兴趣的模块导入每个事件列表,这也将防止事件标签泄漏到全局命名空间中。

我特别希望避免为我的应用程序中的每个模块提供一个“主事件列表”。

有人做过类似的事情吗?

【问题讨论】:

    标签: javascript publish-subscribe


    【解决方案1】:

    我还担心在我的主题中使用魔术字符串。您是否找到了合适的解决方案?我目前已经参加了我不太满意的主要活动列表:

    var app = {
        events: {
            mod1: {
                topica: 'topic-a',
                topicb: 'topic-b'
            },
            mod2: {
                topicx: 'topic-x',
                topicy: 'topic-y'
            }
        }
    }
    
    //usage
    amplify.publish(app.events.mod1.topica)
    

    【讨论】:

    • 我不得不暂停我正在从事的项目,但并没有取得更多进展。我开始实施我在我的问题中提出的解决方案(每个模块有一个单独的 .js 文件,用于枚举事件名称)并且它运行良好,尽管我不是 100% 将其作为“好的和适当的”解决方案出售。
    猜你喜欢
    • 2012-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-08
    • 1970-01-01
    相关资源
    最近更新 更多