所以,我的同事向我介绍了JS/jQuery中的发布/订阅模式,但我很难理解为什么要使用这种模式,而不是“普通”的JavaScript/jQuery。
例如,以前我有以下代码...
$container.on('click', '.remove_order', function(event) {
event.preventDefault();
var orders = $(this).parents('form:first').find('div.order');
if (orders.length > 2) {
orders.last().remove();
}
});
我可以看到这样做的好处,例如...
removeOrder = function(orders) {
if (orders.length > 2) {
orders.last().remove();
}
}
$container.on('click', '.remove_order', function(event) {
event.preventDefault();
removeOrder($(this).parents('form:first').find('div.order'));
});
因为它引入了重复使用
removeOrder
功能的能力,适用于不同的事件等。但是,如果它可以做到相同的事情,为什么要决定实现发布/订阅模式并采取以下措施呢?(FYI,我使用了jQuery tiny pub/sub)
removeOrder = function(e, orders) {
if (orders.length > 2) {
orders.last().remove();
}
}
$.subscribe('iquery/action/remove-order', removeOrder);
$container.on('click', '.remove_order', function(event) {
event.preventDefault();
$.publish('iquery/action/remove-order', $(this).parents('form:first').find('div.order'));
});
我确实阅读过这个模式,但我无法想象为什么会有必要使用它。我看过的教程只涵盖了和我的例子一样基础的示例,解释了如何实现这种模式。
我想象发布/订阅模式在更复杂的应用程序中会发挥作用,但我无法想象一个这样的应用程序。我担心我完全没有抓住重点;但如果有的话,我想知道这个重点!
您能简明扼要地解释一下,在什么情况下这种模式有优势吗?像我上面的代码片段一样,值得使用发布/订阅模式吗?