如何在javascript模块之间进行通信

How to communicate between javascript modules...?

本文关键字:通信 之间 模块 javascript      更新时间:2023-09-26

在我的应用程序中,有几个模块是他们自己的责任,这就是我有些困惑的地方。

  1. 模块之间如何通信?

  2. 如何通知或监听模块之间以做出适当场景的决定..?

例:

模块 1,

var MyModule1 = (function() {
  var myPrivateData = 303;
  function myPrivateFunction() {
    alert('private');
  }
  return {
    myPublicData : 42,
    myPublicFunction : function() {
      alert('public');
    }
  };
})();

模块 2

var MyModule2 = (function() {
  var myPrivateName = privatized;
  function myPrivateFunction() {
    alert(myPrivateName) ;
  }
  return {
    myPublicData : 42,
    myPublicFunction : function() {
      alert('public');
    }
  };
})();

我怎样才能让他们互相交流和倾听..?任何人都可以用一些小例子来澄清吗?我需要共享共享到模块 2 的私有数据和与模块 1 共享的 myPrivate 名称,以防触发任何点击事件。

提前感谢!

以下是浏览器中松散耦合模块组织的基本概念:

当模块 1 中的代码需要通知其他人有关某些事件的信息时,它将执行以下操作:

$(document).trigger( "some:event", someData);

模块 2 如果需要通知它 "some:event" 应该在其初始化时在其代码中执行此操作:

$(document).on( "some:event", function(evt,someData) {
   // ... do something with the data ...
} );

在此架构中,两个模块是完全独立的。他们唯一需要知道的是他们正在与之通信的事件的名称。

像这样的东西

    var ParentClass = (function() {
     var privateVariable = 'toto';
     this.publicVariable = 'titi';
     this.ChildClass = new ChildClass(this);
     this.ChildClass.execute();
    });
    function ChildClass(parent) { this.parent = parent; return this; };
    ChildClass.prototype.execute = function() {
     alert (this.parent.publicVariable); // show titi
    };
ParentClass();