【发布时间】:2013-07-26 02:12:44
【问题描述】:
我是 Extjs 的新手,正在使用 Extjs v4.2.0。
要查找对象,我可以使用Ext.getCmp(id) 或Ext.ComponentQuery.query(attribute)。
哪个更好用,速度更快?
【问题讨论】:
-
专注于“更好”,只有当你正在做的事情被证明很慢时才担心“更快”
我是 Extjs 的新手,正在使用 Extjs v4.2.0。
要查找对象,我可以使用Ext.getCmp(id) 或Ext.ComponentQuery.query(attribute)。
哪个更好用,速度更快?
【问题讨论】:
最好避免直接使用这两个中的任何一个。 Ext.getCmp 特别被认为是不好的“代码气味”。您应该努力以不需要它们的方式组织您的代码。
组件查询很优雅,但您应该从parent container 或controller 使用它们(从而减少研究树并允许您利用相对的itemId)或controller。我猜控制器是组件查询被添加到 Ext4 的真正原因。
【讨论】:
getCmp 会更快,因为它是一个简单的哈希查找。当你使用query时,它必须解析然后执行查询,所以对于一个简单的id,getCmp更好。
但是,请谨慎使用 id,因为它们需要是全球唯一的。只有在您知道只有一个的情况下使用它们才是一个好主意,例如登录窗口或您的主应用容器。
【讨论】: