Cristalab es la comunidad donde aprendí muchísimo de lo que uso hoy en día en mi trabajo. Desde hace dos años que vivo en Londres, Inglaterra y trabajo en una Agencia Digital llamada Cyber-Duck Ltd como Front End Developer. Los que me conocen por aquí, saben que llevo unos 10 años trabajando en internet, que amo mi trabajo y también que me encanta hablar y escribir sobre este tema.
Recientemente fui invitado a hablar en una conferencia sobre diseño web, y escogí hablar sobre los mitos de los pre-procesadores de CSS. Durante mi investigación, Freddie me ayudó a distribuir una encuesta que probablemente muchos de ustedes llenaron, sobre el uso de estos. Aquí están los resultados junto con el resto de la charla.
¿Qué son los Pre-procesadores de CSS?
Yo los veo como un método de agregar dinamismo a un lenguaje muy estático como lo es CSS. Este dinamismo viene en forma de funciones, variables, mixins y extends.
Porcentajes de Uso
En mi encuesta procuraba determinar el porcentaje de uso de los diferentes procesadores disponibles actualmente, así como el porcentaje de gente que no usa ninguno. Esto es lo que descubrí:Latinoamerica: En este gráfico, podemos ver como un altísimo porcentaje de desarrolladores no utiliza ningún tipo de procesador de CSS (alarmante!).
Europa: Podemos ver como no solo el porcentaje que no utiliza ningún procesador es notablemente inferior, sino que además la gran mayoría de desarrolladores tiene Sass como su procesador preferido.
¿Por qué usar pre-procesadores?
Muchos desarrolladores tienen razones particulares para usar (o no usar) un procesador de CSS específico, pero las más comunes son las siguientes:
- CSS es repetitivo.
- CSS no tiene variables.
- Es Inflexible, y complicado de reusar.
- Sitios web complejos se vuelven complicados de mantener.
La inhabilidad de anidar selectores obliga a repetirlos una y otra vez al escribir CSS común. La falta de variables hace que el código no sea reusable, ya que detalles específicos como colores, tamaños y fuentes tienen que ser escritos directamente en cada hoja de estilos.
Los mitos
En orden de popularidad de menor a mayor:
- Disminuye el rendimiento a los sitios.
- Agrega complejidad al proceso de desarrollo.
- Tiene dependencias que deben ser cubiertas.
- Se pierde control sobre el código final.
- Muy complicado de depurar.
Bull. Crap.
Vamos a desmentir uno a uno estos mitos:
Disminuye el rendimiento a los sitios
Este mito proviene del hecho que Less está basado en un compilador escrito en JavaScript que es capaz de compilar “en vivo” una hoja de estilos, por lo que muchos principiantes publicaron las hojas de estilo en archivos Less en vez de pre-compilarlas para producción.Todos los procesadores compilan el código a CSS común y corriente, el cual además puede automáticamente ser comprimido y minificado para reducir tamaño de archivo. Por otro lado, facilitan el concatenar varios archivos en uno solo para reducir HTTP requests, por lo tanto de puede decir que aumenta el rendimiento, no lo disminuye.
Agrega complejidad al proceso de desarrollo
Anidar selectores se hace natural al escribir código, de la misma forma que las variables son naturales en muchos lenguajes y representan una forma más fácil de lidiar con valores que se repiten a lo largo de la hoja de estilos.Al final, no es obligatorio usar toda la funcionalidad de Sass para que sea productivo, e incluso puedes escribir CSS plano y Sass lo procesará como si nada (No Less ni Stylus), de esta forma puedes empezar a usarlos y poco a poco ir incorporando la funcionalidad.
Tiene dependencias que deben ser cubiertas
Por un lado, todo entorno de desarrollo tiene sus dependencias, y las de procesadores de CSS no son en ningún caso complicadas o difíciles de instalar y configurar. Por otro, en la web de hoy en dia, si no usas un pre-procesador, necesitas un post-procesador (a menos que seas un completo masoquista).Agregar prefijos de navegador, o simplemente minificar el código es prácticamente automático con cualquier pre-procesador, de lo contrario es necesario el paso extra usando alguna herramienta externa para lograr este objetivo. Mas adelante hay una lista de herramientas que facilitan este proceso.
Se pierde control sobre el código final
Sass no se escribe por sí solo. Esto significa, que si tu código final es horrible, tu código Sass es horrible (y muy probablemente tu actual CSS tambien es horrible).Todos los pre-procesadores actuales tienen la opción de compilar código en su forma expandida, con comentarios y saltos de línea, etc, para que puedas revisar tus selectores, y el estilo durante el desarrollo, y así identificar posibles problemas o detalles que puedan mejorarse.
Muy complicado de depurar
Si escribes código organizado, no debería ser complicado de depurar. Usar archivos separados para cada componente o sección de tu sitio e importarlos con @import, esto ayuda mucho para depurar, al final todos se concatenan en un solo archivo para producción.El proceso está mejorando día a día, incluso las últimas versiones de Chrome Canary (versión de desarrollo) incluyen soporte a “sourcemaps” con Sass (solo versión 3.3) que mapean los archivos Sass en vez del archivo CSS, indicando archivo original y número de línea de la regla inspeccionada, facilitando su localización.
En mi experiencia, el costo de la depuración es muy bajo comparado con el beneficio de usar procesadores.
Recursos
Siempre recurre a la documentación, los tres principales pre-procesadores cuentan con muy buena documentación online, haz buen uso de ella.
Esta es una lista (no exaustiva) de herramientas gráficas que ayudan en el desarrollo, para Mac, para Windows, algunas multiplataforma, unas de pago y otras gratis:
Otras herramientas interesantes son Grunt! Buildr y Brunch.io que además hacen muchas otras cosas.
¿Cuál es el mejor?
En mi opinión, Sass tiene varias ventajas como lo son su rápido y activo desarrollo, soporte de grandes empresas (Google), y el hecho de que su estilo es muy parecido a CSS hace el cambio aun más fácil, aparte que es el único que actualmente soporta Sourcemaps (Less está en proceso de implementarlo, Stylus lo está considerando). En cualquier caso, asegúrate de que la opción que elijas se adapta bien a tu proceso y que simplemente se sienta bien en tu caso particular. Si todavía no lo usaste, aquí tienes una Introducción a Sass y Compass.
Cabe mencionar, que es importante saber cómo funciona CSS antes de intentar usar un pre-procesador, ya que ésta es la mejor forma de saber que tu código esta bien escrito y bien estructurado.
Espero que este artículo te ayude a tomar una buena decisión con respecto a los pre-procesadores de CSS, y por cualquier duda, pregunte.
¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.
Por Josue Ochoa el 26 de Noviembre de 2013
Por adobexpert el 26 de Noviembre de 2013
Por maneuver el 26 de Noviembre de 2013
Por Omegakenshin el 26 de Noviembre de 2013
Por smailyn el 27 de Noviembre de 2013
Por Dientuki el 27 de Noviembre de 2013
Tambien hacemos trabajo luego de que esta el css generado para concatenarlo y mimificarlo.
Por jlmurgas el 27 de Noviembre de 2013
Gracias!
Por luisk1306 el 27 de Noviembre de 2013
Por luisrodriguez el 27 de Noviembre de 2013
Por elporfirio el 27 de Noviembre de 2013
Si eres un usuario comun, de hosting compartido por que es lo que puede pagar tu cliente, este tópico no es para ti en estos momentos.
Será muy bonito pre-compilar CSS pero esta tecnologia, como NodeJS requiere de una inversion de capital mayor.
Por Ramm el 27 de Noviembre de 2013
Completamente falso elporfirio.
Usar pre-procesadores es completamente gratuito, e incluso muchas de las herramientas gráficas mencionadas en el articulo son también gratuitas. Compilar CSS en desarrollo no cuesta absolutamente nada.
Si lees el articulo completo te darás cuenta que el resultado final es un archivo común CSS, el cual subes al mismo servidor donde tienes tu actual CSS.
Por smailyn el 27 de Noviembre de 2013
Por roabhi el 28 de Noviembre de 2013
Por torrealbaruben el 28 de Noviembre de 2013
@elporfirio has lo que yo hago, compilo mi Sass en local y luego subo el .css al servidor.
Por Dientuki el 29 de Noviembre de 2013
elporfirio :
Si eres un usuario comun, de hosting compartido por que es lo que puede pagar tu cliente, este tópico no es para ti en estos momentos.
Será muy bonito pre-compilar CSS pero esta tecnologia, como NodeJS requiere de una inversion de capital mayor.
Falso como lagrima de cocodrilo. Sass te permite compilar en local y subes a tu server un archivo css de toda la vida. En la consola realizas
Código :
y listo, cada ves que tocas un scss te compila a css, en LOCAL.
roabhi-blog :
No te creas, te cambia la vida, gastas menos tiempo en hacer css, tiempo que puedes usar para otra cosa. Prueba Sass, prueba Haml (o similar), haz tu trabajo inteligentemente y seras mas feliz
Por Ramm el 29 de Noviembre de 2013
Dientuki :
You said it bro.
Por roabhi el 30 de Noviembre de 2013
Por Duilio el 30 de Noviembre de 2013
Además tú nunca sabes cuando tu cliente va a comenzar a hacerse millonario gracias al sitio que le hiciste y vaya a querer que le agregues más secciones, etc.
Por cierto Ramón cuando un tutorial de Hoisin?
Por Ramm el 30 de Noviembre de 2013
Duilio :
Ando haciendo la documentación, luego de eso puedo hacer un tuto.
Por Dientuki el 30 de Noviembre de 2013
roabhi-blog :
Nesting, con eso tipeas menos las reglas de CSS
Mixng, te olvidas de los vendor prefix y tipeas menos
Variables y formulas, adios a hacer una cuenta mental o con tu calculadoraa
Con esas 3 cosas ahorras un 15% de tiempo (en el peor de los casos).
De todas, YO pensaba igual que tu y puedo decir que es un camino de ida
Por gabovanlugo el 04 de Diciembre de 2013
Por elporfirio el 06 de Diciembre de 2013
Entonces al final de cuentas SASS te ahorra el estar estar revisando el CSS de toda la vida, permitiendo codificar mas cosas en menos lineas.
Una vez que esta el archivo CSS todo normal, así si me gusto
Por Ricardo el 25 de Agosto de 2015
Por marcellus48k el 02 de Septiembre de 2015
Muy bueno el artículo, sobre todo para gente como yo que está pasando del back al front y desconozco gran parte de estas herramientas.
Por leonardo el 27 de Septiembre de 2015
actualmente uso mas sass, pero no se si
tengo que subir al servidor el scss y el .map o solo el css final.
Saludos