【发布时间】:2016-02-21 15:34:29
【问题描述】:
用原生 JavaScript 编写自己的事件总线很简单,但是利用内置的 DOM 事件处理 API 和 CustomEvents 用于应用程序事件总线有什么优势吗?
【问题讨论】:
-
一个明显的优势是您不必自己编写。 :-) 一个明显的缺点是它与 DOM 相关联。
标签: javascript dom custom-event
用原生 JavaScript 编写自己的事件总线很简单,但是利用内置的 DOM 事件处理 API 和 CustomEvents 用于应用程序事件总线有什么优势吗?
【问题讨论】:
标签: javascript dom custom-event
原生 DOM 事件并不像人们想象的那么简单。有关bubbling and propagation of DOM events 的更多详细信息。 也许这就是为什么每个现代 JS 框架都不依赖 DOM 事件来处理数据的原因。
Angular 1.x 内置了 pub/sub 系统,易于使用,但与应用程序逻辑中发生的事情无关,在大型应用程序中很容易变得复杂。 p>
//subscribe and listen
$scope.$on(name, function(){});
//emit up or down
$scope.$broadcast(name, args);
$scope.$emit(name, args);
ReactJS 有另外一个系统 system to handle events 和他们的数据,同样与真实的 DOM 无关。在这种情况下,事件更多地与应用程序的实际状态相关联,并且可以通过多种方式来处理它 - flux、fluxxor、redux 等。
还有一个小型 (6kb) 库,不依赖于处理事件流思想应用程序 - PubSubJS。
【讨论】: