繁体   English   中英

不使用CSS选择器的JS框架?

[英]JS Framework that doesn't use CSS selectors?

对于大多数JavaScript框架,我注意到的一件事情是,查找/访问DOM元素的最常见方法是使用CSS选择器。

但是,这通常要求框架包含CSS选择器解析器,因为它们需要支持选择器,而浏览器本身不支持选择器,最重要的是框架拥有专有扩展。

我认为这些解析器很大且很慢。 拥有不需要解析器(例如链式方法调用)的东西会更有效吗?

像:

id("example").children().class("test").hasAttribute("href")

代替

$("#example > .test[href]")

周围是否有类似的框架? 在性能和大小方面,他们如何与jQuery和朋友比较?

编辑:您可以认为这是一个理论性的讨论主题。 我不打算在几乎所有的实际项目中使用jQuery以外的任何东西。 我只是想知道为什么没有其他可能更好的方法。

请注意那是多长时间。 每个人都使用CSS样式的选择器是有原因的。

jQuery的Sizzle库针对解析器速度进行了优化,因此您不必太担心。

DOM遍历和操作是当前流行的JavaScript框架中最有用的功能,因为它们有效地处理了跨浏览器问题。 如果您正在使用DOM,则最终将需要该功能,并且您自己编写的任何内容都必然比最佳方法的效率低。

在速度方面,我可以想象解析选择器对性能造成的轻微影响将被引擎固有的优化所抵消。 如果您依靠程序员来指定路径(即您的示例),则可能会错过您不知道的优化机会。 例如,在您的示例中,假设它最终从右到左更快(首先使用hrefs查找所有class =“ test”,然后再检查其父级)。 您将依靠程序员来记住这些优化怪癖。

从我阅读的内容来看,这些库(或JQuery atleast)尽可能使用浏览器的本机功能。 这意味着您可以通过坚持使用简单的ID和类来使用CSS选择器,而影响最小。

我个人根本没有注意到这些库中的任何速度问题。 在构建Web应用程序时,几乎所有速度问题都来自网络通信,因此,提高应用程序响应速度的最佳方法是减少对服务器的查询数量。

例如,我将使用JSON一次性传递和存储更多数据(即使可能永远不需要其中的一些数据),而不是进行很多小的查询。

正如SLaks所暗示的那样,css选择器使代码的可读性和长期维护变得更加容易,并减少了编码时间。 正如安德鲁所说,这些库还可以为您处理跨浏览器的问题,从而使脱发率大大降低。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM