如何在javascript模块之间进行通信
How to communicate between javascript modules...?
在我的应用程序中,有几个模块是他们自己的责任,这就是我有些困惑的地方。
-
模块之间如何通信?
-
如何通知或监听模块之间以做出适当场景的决定..?
例:
模块 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();
相关文章:
- firefox插件和dev/panel之间的通信
- 如何在两个不同的iframe HTML之间进行通信
- Angularjs事件与发布/订阅指令之间的通信
- Firefox插件SDK:在侧边栏和主脚本之间通信对象
- Ember.js:接受的子组件和父组件之间通信的最佳实践
- 如何在Windows Phone 8.1应用程序中在C#和Javascript之间传递数据或通信
- 如何在Famo.us中的两个视图(不同的js文件)之间进行通信
- 在Jquery或Javascript中获取两个范围或日期之间的通信周数
- 如何在同源选项卡之间建立通信
- 如何在 PHP 和 JS 中的并发会话之间进行通信
- 如何在两个动画画布元素之间进行通信
- 在 HTML5 和 C# Web 套接字通信之间
- angularjs 中控制器和指令之间的通信
- 歌剧扩展脚本和它们之间的通信
- 如何使用js在两个aspx页面之间进行通信
- 多个应用程序之间的通信
- Chrome扩展:内容脚本和background.html之间的通信
- 如何在同一页面上的Angular应用程序和非Angular应用软件之间进行通信
- 反应.js:同一父母的两个孩子之间的通信
- 我的Javascript和PHP通信之间有什么问题,用于上传图像