Hace unos meses this article señaló que las clases realmente podrían evitarse juntas desde el desarrollo del sitio web.¿Los selectores css de atributo de datos son más rápidos que los selectores de clase?
Mi pregunta es, ¿qué tan eficientes son los selectores de datos en comparación con los selectores de clase?
Un ejemplo simple sería comparar la consulta de elementos con data-component='something'
frente a elementos con class='class1 class2 something anotherClass'
.
El selector [data-<attr>='<value>']
comprobará el valor como un todo frente a la cadena de clase que se debe dividir. Con esto en mente, los atributos de datos deberían ser más rápidos.
Por lo tanto, para refinar la pregunta, en el caso de CSS, ¿nos va mejor con selector de clase o selector de datos? Y desde un punto de vista de javascript, ¿será jQuery("[data-component='something']")
más eficiente que jQuery(".something")
?
no sé qué tipo de la programación web es relevante para la sofistería de ese artículo, pero estoy bastante seguro de que no tiene nada que ver con lo que hago. Además, si lees ese artículo de cerca, sospecho que su autor tendría tanta preocupación con los atributos 'data-' como con las clases; ambos representan el mismo "crimen" después de todo. – Pointy
En cuanto a su pregunta, algunas pruebas [jsperf] (http://jsperf.com) pueden ayudar a responder la pregunta. Sospecho que cualquier navegador moderno con 'querySelectorAll()' etc. tendrá poca dificultad con cualquiera de los enfoques. – Pointy
Cuanto más pienso en los atributos de los datos y los diseño en lugar de agregar clases, más me gustan. Por ejemplo, el hecho de que un elemento de bloque (como un cuadro de búsqueda) esté oculto puede indicarse mediante el estado de datos = 'oculto'. Me parece más fácil para mí, un desarrollador para leer, que "componente widget-encabezado tangible oculto redondeado-superior". –