Events 木偶事件之间的区别
我正在阅读marionette.js文档,我不理解Events 木偶事件之间的区别,events,marionette,Events,Marionette,我正在阅读marionette.js文档,我不理解vent、requres和命令之间的区别 我唯一清楚明白的是,命令不应该返回任何内容 有人能解释一下吗?让我们从顶部开始:是一个附带木偶的主干插件。它为松散耦合的应用程序提供了三种消息传递模式 此答案包括文档中的示例代码-贷记到 事件 EventAggregator对象的工作方式类似于主干网。事件-它们支持名称空间的事件处理vent只是EventAggregator对象的通用变量名: var vent = new Backbone.Wreqr.E
vent
、requres
和命令之间的区别
我唯一清楚明白的是,命令不应该返回任何内容
有人能解释一下吗?让我们从顶部开始:是一个附带木偶的主干插件。它为松散耦合的应用程序提供了三种消息传递模式
此答案包括文档中的示例代码-贷记到
事件
EventAggregator
对象的工作方式类似于主干网。事件
-它们支持名称空间的事件处理vent
只是EventAggregator
对象的通用变量名:
var vent = new Backbone.Wreqr.EventAggregator();
vent.on("foo", function(){
console.log("foo event");
});
vent.trigger("foo");
命令
命令与事件非常相似。区别在于语义——事件通知应用程序的其他部分发生了什么。命令指示应用程序的另一部分执行某些操作
var commands = new Backbone.Wreqr.Commands();
commands.setHandler("foo", function(){
console.log("the foo command was executed");
});
commands.execute("foo");
请求/答复
RequestResponse
对象通常由名为reqres
的变量引用,为应用程序组件请求访问对象提供了一种松散耦合的方式:
var reqres = new Backbone.Wreqr.RequestResponse();
reqres.setHandler("foo", function(){
return "foo requested. this is the response";
});
var result = reqres.request("foo");
console.log(result);
电台和频道
为了方便起见,Wreqr提供了一个名为radio
的对象,它混合了三种消息传递模式。命令、事件和请求可以分组到逻辑通道中以防止干扰-例如,您可能需要为用户
和文档
通道使用不同的保存
命令
木偶
木偶。应用程序
使用常规变量名在通道内创建命令
、请求响应
和事件聚合器
(默认为“全局”)的实例
。如果需要自定义行为,可以覆盖通风
、命令
和需求
变量
_initChannel: function() {
this.channelName = _.result(this, 'channelName') || 'global';
this.channel = _.result(this, 'channel') || Backbone.Wreqr.radio.channel(this.channelName);
this.vent = _.result(this, 'vent') || this.channel.vent;
this.commands = _.result(this, 'commands') || this.channel.commands;
this.reqres = _.result(this, 'reqres') || this.channel.reqres;
},
我建议你仔细阅读这本书。我还建议通读-它是简洁的,有很好的文档记录,事实上,它包含了Wreqr源代码
注:Marionnette的下一个主要版本v3.x将用替换Wreqr。Radio提供了与Wreqr相同的功能,具有更干净的API。如果您正在启动一个新的应用程序,我建议您使用它。ReqRes
Messenger
reqres
信使既可以向目标发送消息(包括命名的事件
以及可选参数),也可以将响应中继回源(以目标函数返回参数的形式)
命令
信使
命令
和vent
信使在功能上非常相似,但履行不同的语义职责
命令
信使用于调用目标函数的执行。通常,一个函数绑定到命令
处理程序。与OP所述一样,在命令
中,通信方向是单向的,这意味着无论命令
目标返回什么,都不会将命令
发送回传入源
VENT
Messenger
最后,vent
信使是事件聚合器。您可以将多个侦听器附加(订阅)到vent
,所有侦听器都将接收由vent
触发(发布)的事件。当触发ven
t中的事件时,每个监听器将调用与该监听器关联的函数。它还可以向每个监听器发送一组参数。非常全面且信息丰富!在木偶3.0版中添加了无线电
升级