Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.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
Wreqr与Javascript对象_Javascript_Backbone.js_Marionette_Eventaggregator - Fatal编程技术网

Wreqr与Javascript对象

Wreqr与Javascript对象,javascript,backbone.js,marionette,eventaggregator,Javascript,Backbone.js,Marionette,Eventaggregator,主干网的主要优势是什么?相对于js对象,wreqr具有哪些优势,这两种情况都可以访问木偶网的事件聚合器。 从对象分配/调用方法的工作方式是否与命令/请求响应的工作方式相同。对我来说,除了给语义/可读性一个+1,我认为没有必要实现这一点 有人能告诉我,这是我的第一个主干(和模块化)应用程序。它提供了几种常见的实现,包括、和 这些模式有助于实现解耦以减少对象依赖性。考虑一个简单的“战斗”风格的游戏,包括坦克和几个目标。如果没有消息传递模式,坦克需要明确了解目标及其工作方式,事实上,如果没有目标定义

主干网的主要优势是什么?相对于js对象,wreqr具有哪些优势,这两种情况都可以访问木偶网的事件聚合器。
从对象分配/调用方法的工作方式是否与命令/请求响应的工作方式相同。对我来说,除了给语义/可读性一个+1,我认为没有必要实现这一点



有人能告诉我,这是我的第一个主干(和模块化)应用程序。

它提供了几种常见的实现,包括、和

这些模式有助于实现解耦以减少对象依赖性。考虑一个简单的“战斗”风格的游戏,包括坦克和几个目标。如果没有消息传递模式,坦克需要明确了解目标及其工作方式,事实上,如果没有
目标
定义,坦克就无法生存:

var Tank = function(targets) { this.targets = targets };
Tank.prototype.fire = function() {
    var self = this,
        HpLoss = -500;
    _.each(this.targets, function(target) {
    if (self.isNear(target.coordinates) && target.canWithstand(HpLoss)) {
          target.die();
    }
}


var target1 = new Target(coordinatesA, armorA);
var target2 = new Target(coordinatesB, armorB);
var tank = new Tank([target1, target2]);
在上面的代码中使用消息传递模式,例如Observer、
tank
,不需要了解其目标;相反,目标可以自行决定他们是否应该死亡:

var Target = function() {}
Target.prototype.calculateDamage = function(coordinates, damage) {
    if (this.isNear(coordinates) && !this.canWithstand(damage)) {
        this.die();
    }
}

var Tank = function() {};
Tank.prototype.fire = function() {
    this.trigger('fire', { damage: 400, coordinates: this.location });
};

// Now Tank is entirely self-contained, and some external mediator can 
// make things happen at will:

function main() {
    var target1 = new Target(coordinatesA, armorA);
    var target2 = new Target(coordinatesB, armorB);
    var tank = new Tank();

    target1.listenTo(tank, 'fire', target1.calculateDamage, target1);
    target2.listenTo(tank, 'fire', target2.calculateDamage, target2);

    tank.fire();

    var target3 = new Target3(coordinatesB, armorB);
    target3.listenTo(tank, 'fire', target3.calculateDamage, target3);
}
好处是:

  • 事件和命令处理是可选的,您无需手动检查是否有
    未定义
  • 可以为每个事件选择多个处理程序
  • 命令的延迟执行(先触发事件,然后注册命令,然后立即执行)
  • 您可以使用任何其他方法(如
    $.proxy
    ,…)来定义执行范围w/o
嘿,克里斯,谢谢你的回答,尽管它没有回答我最初的问题。您的示例显示了事件聚合器中包含的订阅者/发布者工作流。Wreqr的Commands/RequestResponse让我不知所措,直到澄清这些方法的存在仅仅是出于语义/可读性的原因。然而,这是一个很棒的评论。谢谢,这正是我想要的!点#1,所以如果没有处理程序,那么在触发commands.execute(“黑洞”)时不会抛出错误?