Una historia de cómo la transformación del código ha afectado a la industria. Y cómo llevó a cambios en la forma en que escribimos CSS
This talk has been presented at React Day Berlin 2024, check out the latest edition of this React Conference.
Una historia de cómo la transformación del código ha afectado a la industria. Y cómo llevó a cambios en la forma en que escribimos CSS
This talk has been presented at React Day Berlin 2024, check out the latest edition of this React Conference.
Hola, soy Naman. Hoy, voy a hablar sobre el poder atómico y la historia de StylX. Al principio, solo existía HTML sin CSS. Usábamos etiquetas blink y etiquetas marquee para el estilo, lo cual era limitado. Luego se inventó CSS, resolviendo algunos problemas pero creando nuevos. Los preprocesadores de CSS como Sass y Less surgieron para abordar estos desafíos.
Hola, soy Naman. Mantengo StylX en Mera, y hoy voy a hablar sobre el poder atómico. Y no del tipo nuclear, sino que voy a hablar sobre lo atómico, y voy a hablar sobre poder. Y luego, usando esa lente, voy a contarles la historia de StylX.
Así que comencemos desde el principio. Al principio, existía HTML y fue el nacimiento de la World Wide Web. Y no había CSS. HTML es todo lo que teníamos. Y con ese HTML, usábamos etiquetas blink y etiquetas marquee para divertirnos, etiquetas de fuente para algo de estilo, y también lidiábamos con diseños de tablas. Eso no era divertido. Esto no era genial, pero era muy limitado. Todo tipo de diseños que hacemos hoy eran simplemente imposibles. Y era muy tedioso. No había forma de reutilizar nuestros estilos en los componentes. Los componentes ni siquiera existían aún.
Y así, en unos pocos años, personas inteligentes se reunieron e inventaron CSS. CSS resolvió algunos de nuestros mayores problemas con el estilo en HTML. Era mucho más poderoso, había diseños reales que podías hacer, y no solo con tablas. Y era mucho más reutilizable. Podías definir un selector CSS una vez y usarlo en todo tu HTML. Pero a medida que resolvíamos algunos problemas, descubríamos nuevos. Y nos dimos cuenta de que, dado que CSS no tenía espacios de nombres, era realmente difícil de mantener. Y dado que este es el CSS temprano, ni siquiera tenía variables. Así que no tenemos que repetirnos en nuestro HTML, pero ahora tenemos que repetirnos en nuestro CSS.
Así que algunas personas más inteligentes se reunieron, y llegamos a un nuevo conjunto de herramientas. Esta vez, eran preprocesadores de CSS. Cosas que procesarían algo que escribiste y generarían tu CSS. Puede que hayas oído hablar de Sass y Less. Solía usar Stylus, y CSS era CSS en JS antes de CSS en JS. Los preprocesadores de CSS resolvieron algunos de nuestros mayores problemas con CSS, como variables y anidamiento.
En la siguiente era, hubo una bifurcación en el camino. Algunos se movieron hacia los módulos de CSS, mientras que otros se movieron hacia CSS en JS. Los módulos de CSS resolvieron el problema de los espacios de nombres, pero tenían problemas de escalabilidad. CSS en JS proporcionó espacios de nombres y una mejor experiencia para el desarrollador. El CSS en JS compilado evolucionó, resolviendo algunos problemas pero no todos los problemas de escalabilidad. La idea de CSS atómico surgió como una convergencia entre los módulos de CSS y el CSS en JS en tiempo de compilación.
También añadieron un montón de otras características poderosas como bucles e inclusiones. Pero aún no tenían espacios de nombres, y seguía siendo difícil de mantener a gran escala. Y así, los ingenieros siguieron trabajando. Y en la siguiente era, hubo una bifurcación en el camino. Y parte de la comunidad se movió hacia los módulos de CSS, y otra parte de la comunidad se movió hacia CSS en JS. La razón por la que esto sucedió fue porque esta es la era en la que las aplicaciones de una sola página se estaban volviendo populares, y los frameworks como React habían comenzado a aparecer. Y solo para ser claros, hubo muchas personas que no se movieron a ninguna de estas nuevas herramientas y continuaron usando el buen CSS antiguo o preprocesadores de CSS. Pero me voy a centrar en cada paso adelante que damos y no continuar mencionando que, sí, las herramientas antiguas nunca desaparecieron.
Así que, en el lado de los módulos de CSS, finalmente resolvieron el problema de los espacios de nombres. Esto fue enorme. Esta es la razón por la que los módulos de CSS son tan exitosos. Pero aún era difícil de escalar de algunas maneras. En general, la mantenibilidad del código se había resuelto en su mayor parte, pero aún podías encontrarte con cierta cantidad de conflictos de CSS, y tu CSS seguiría creciendo a medida que tu aplicación se hace más grande. Por otro lado, CSS en JS también nos dio espacios de nombres, y nos dio un montón de otros poderes. Nos dio una experiencia de desarrollador mucho mejor que cualquier cosa que habíamos probado antes. Ahora podías escribir tu estilo en el mismo archivo que tu marcado, en el mismo archivo que tu componente. Pero la mayoría de estas primeras bibliotecas de CSS en JS tenían un rendimiento realmente malo porque dependían de la inyección de estilo en tiempo de ejecución. Y así, los desarrolladores de JavaScript, siendo desarrolladores de JavaScript, seguimos intentándolo.
Y un montón de bibliotecas realmente impresionantes surgieron y se volvieron exitosas. Y eventualmente alcanzamos el siguiente hito, que fue el CSS en JS en tiempo de compilación. Esta fue una evolución de la idea de CSS en JS, donde no tienes la sobrecarga de rendimiento porque compilas todo tu CSS en tiempo de construcción, y ya no tienes ninguna inyección de estilo en tiempo de ejecución, pero aún tienes la misma gran experiencia de desarrollador, que es por lo que CSS en JS fue tan exitoso en primer lugar. Y aunque resolvió muchos problemas, no resolvió completamente todos los problemas de escalabilidad que hemos tenido con básicamente cada solución de CSS que hemos probado. A medida que tu aplicación se hace más grande, tu CSS se hace más grande. Entonces te ves obligado a cargar tu CSS de manera diferida, lo que significa que las actualizaciones de tu página se vuelven más lentas porque estás esperando que se cargue, procese y compute CSS adicional. Y así continuamos. Un montón de más grandes bibliotecas de CSS en JS en tiempo de compilación surgieron, como Linarea y Vanilla Extract, y alcanzamos algún tipo de convergencia, donde las dos corrientes más o menos acordaron en la idea de CSS atómico. Por supuesto, no todos estuvieron de acuerdo. Muchas personas se aferraron a los módulos de CSS, módulos de CSS Vanilla, y muchos otros continuaron usando el CSS en JS en tiempo de compilación, o incluso CSS en JS en tiempo de ejecución. Pero es importante notar que muchas personas de ambas corrientes sí estuvieron de acuerdo en que el CSS atómico era una buena idea. Pero, ¿qué es el CSS atómico? Tan pronto como se menciona el término, este pensamiento aparece en la cabeza de todos, este elefante en la habitación.
We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career
Comments