Javascript Jquery事件性能mvc

Javascript Jquery事件性能mvc,javascript,jquery,javascript-events,javascriptmvc,spine.js,Javascript,Jquery,Javascript Events,Javascriptmvc,Spine.js,我正在检查一个javascript应用程序的性能,该应用程序是用spine.js和下划线js(充当模板引擎)构建的。有一个通用的EventManager.js处理应用程序中的所有事件(通过jquery“on”body元素上的事件处理,请参见下面的代码段),然后应用程序有自己的发布-订阅中介委托给所有模块,它过滤事件,然后发送到所有模块,通过筛选目标并将内部事件发布到模块 鼠标移动事件在事件管理器上处理该事件,因此任何鼠标移动都将由事件管理器处理,而不仅仅是在特定的div元素上处理鼠标移动。我认为

我正在检查一个javascript应用程序的性能,该应用程序是用spine.js和下划线js(充当模板引擎)构建的。有一个通用的EventManager.js处理应用程序中的所有事件(通过jquery“on”body元素上的事件处理,请参见下面的代码段),然后应用程序有自己的发布-订阅中介委托给所有模块,它过滤事件,然后发送到所有模块,通过筛选目标并将内部事件发布到模块

鼠标移动事件在事件管理器上处理该事件,因此任何鼠标移动都将由事件管理器处理,而不仅仅是在特定的div元素上处理鼠标移动。我认为有太多的功能正在进行

例如:div上的click事件由类似module.subscribe的模块处理(“App click”,onModuleClickHandler,filter:{selector:'#someSelector')。如果单击了该选择器,eventmanager将检查当前目标是否具有该选择器,然后将自定义的“App click”发布到该模块

这样处理好吗?还是只处理每个html的子模块上的事件而不是普通的事件管理器?如果问题的任何部分含糊不清,请发表评论,我将更详细地更新该部分

以下是eventManager的片段

$('body')
    .on('mousedown',   onMouseEvent)
    .on('mouseup',     onMouseEvent)
    .on('mouseover',   onMouseEvent)
    .on('mousemove',   onMouseEvent)
    .on('mouseout',    onMouseEvent)
    .on('click',       onMouseEvent)
    .on('mousewheel',  onMouseWheelEvent);

DOM上的事件传播使用下沉(捕获)和冒泡阶段。 您的活动经理原则上也应实施这一点,因为它非常灵活和实用


但是还不清楚为什么您需要自己实现它。它已经存在了。

您应该只为您感兴趣的人请求事件。@Leetylor应用程序需要所有这些事件,您是说在特定的div而不是dom上注册吗?($(“#divid')。on)而不是主体。另外,我如何衡量两者的性能,告诉他们这对性能是坏的,而这对性能是好的。是的,我的意思是,你应该只为你需要的特定DOM元素请求这些事件。你可以在现代浏览器中使用内置的探查器工具来帮助你确定要实现的性能增益该应用程序Application没有实现事件传播,但他们创建了一个mvc体系结构,以便在eventmanager.js中处理dom事件,然后仅发送给订阅了与该dom事件对应的自定义事件名称的模块,例如:div上的单击事件由类似于module.subscribe的模块处理(“应用程序单击”),onModuleClickHandler,filter:{selector:“#someSelector”)。如果单击了该选择器,则eventmanager会将自定义的“应用程序单击”发布到该模块。我不知道他们为什么会这样做,只想知道其利弊。