Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Events 木偶事件之间的区别_Events_Marionette - Fatal编程技术网

Events 木偶事件之间的区别

Events 木偶事件之间的区别,events,marionette,Events,Marionette,我正在阅读marionette.js文档,我不理解vent、requres和命令之间的区别 我唯一清楚明白的是,命令不应该返回任何内容 有人能解释一下吗?让我们从顶部开始:是一个附带木偶的主干插件。它为松散耦合的应用程序提供了三种消息传递模式 此答案包括文档中的示例代码-贷记到 事件 EventAggregator对象的工作方式类似于主干网。事件-它们支持名称空间的事件处理vent只是EventAggregator对象的通用变量名: var vent = new Backbone.Wreqr.E

我正在阅读marionette.js文档,我不理解
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版中添加了
无线电
升级