在大型系统中附加事件处理程序的最佳做法
Best practices attaching Event Handlers in large systems
我开始在javascript上构建更大的东西,我想知道编码风格和性能。现在我试图弄清楚在这种情况下附加事件处理程序的最佳方法是什么:我有 Item() 构造的对象,文档中有div,每个对象一个,带有相应的 ID。我想从每个div 的事件处理程序访问其项目对象表示形式。这些项目将被大量操作、创建、删除等,因此它们的div 也是如此。您可以在此处查看代码(任何一般编码风格的反馈将不胜感激)。
我可以这样做:
-
通过直接将我的所有事件处理程序放在 Item 构造函数中,因此他们有权访问正在构造的对象(var that = this)。我认为在这里拥有所有这些代码不是一个好主意,但是我可能想多了。
-
将处理程序存储在单独的处理程序集合对象中并使用辅助函数访问项目对象getItemFromDOM(div) 读取divs id 并搜索数组中的相应项,其中文档中的所有项都位于数据处理。
-
在代码中将某个地方分隔为函数registerItemEvents(item) 在 Item 构造函数中调用并用于为处理程序生成项目闭包,该闭包将存在里面。
我猜最优雅的是第三个,但我可能高估了整洁,拒绝了第一个。另外,使用第三个,如果我开始删除项目,对它们的关闭是否会阻止内存被释放,最终减慢整个事情的速度?是否可以通过在删除项目之前简单地释放事件处理程序来解决此问题?
我认为如果可能的话,你应该考虑使用委托。 据我所知,添加和删除事件处理程序会增加不必要的开销。
无论你选择如何实现(jquery,yui,other,custom),雅虎的这篇文章都有一些很好的信息
http://www.yuiblog.com/blog/2009/11/13/event-delegation-3/
- 链接两个网页或网络应用程序的最佳方式
- 显示全屏Ajax加载程序的最佳方式
- 在企业应用程序框架中包含js/css文件的最佳实践是什么
- 在变量中保存值的最佳方法是在应用程序关闭后使用,然后使用apachecordova在android中重新启动
- 展示纯js应用程序前端的最佳架构是什么
- 主干.js事件处理程序命名的最佳做法
- 应用程序的最佳目录结构 - 节点 + 道场:这行得通吗?
- 用于组织大型javascript应用程序的工具和最佳实践
- 在angular js中,每次应用程序进入状态时,重新加载状态的最佳方式是什么
- 将配置传递到qoxdoo应用程序的最佳实践
- 使用AngularJS应用程序为移动设备(iOS、Android等)构建本地应用程序的最佳方式
- 在同构的React web应用程序中,选择服务器渲染的最佳方式是什么
- AngularJS组件和cms驱动应用程序的最佳实践
- 确定公开JS实用程序函数的最佳模式
- 在单页应用程序 (SPA) 中处理身份验证的最佳方法
- 让Laravel应用程序同时服务于基于浏览器的应用程序,并充当iPhone和Android应用程序的API的最佳实践是什
- 将复杂内容(想想整个网页树)从一个 Web 应用程序提供给另一个网站的最佳可重用解决方案是什么?
- 在大型系统中附加事件处理程序的最佳做法
- 简单的语法检查器程序-最佳数据结构
- Javascript Web应用程序最佳实践