{"id":8617,"date":"2016-03-08T23:16:27","date_gmt":"2016-03-08T22:16:27","guid":{"rendered":"http:\/\/www.palentino.es\/blog\/?p=8617"},"modified":"2016-03-08T23:25:31","modified_gmt":"2016-03-08T22:25:31","slug":"principales-preprocesadores-css-ventajas-entorno-y-enlaces","status":"publish","type":"post","link":"https:\/\/www.palentino.es\/blog\/principales-preprocesadores-css-ventajas-entorno-y-enlaces\/","title":{"rendered":"Principales preprocesadores CSS. Ventajas, entorno y enlaces."},"content":{"rendered":"<p>Los preprocesadores CSS son herramientas inform\u00e1ticas que nos permiten convertir un determinado lenguaje a otro tipo de ficheros, conocidos como <strong>hojas de estilo en cascada o CSS<\/strong>.<\/p>\n<p>Los m\u00e1s populares y extendidos son <strong>LESS<\/strong>, <strong>Sass<\/strong> y <strong>Stylus.<\/strong><\/p>\n<p>Por lo tanto lo que realizan es la conversi\u00f3n de un fichero (por ejemplo <strong>SCSS<\/strong>) con unas determinadas reglas y programaci\u00f3n a otro de tipo CSS compatible con los navegadores.<\/p>\n<p>Nos ofrecen nuevas caracter\u00edsticas que aportan mas <strong>versatilidad<\/strong> a la hora de crear las CSS. <strong>El resultado es el mismo<\/strong>, pero con una facilidad de construcci\u00f3n y claridad mayor.<\/p>\n<p>Cada preprocesador emplea su propio lenguaje, pero todos ellos exportan a CSS v\u00e1lido. Todos ellos, poseen un lenguaje muy similar al CSS, pero ampliando sus funcionalidades.<\/p>\n<p>El objetivo de todos ellos es generar un CSS compatible y acorde a la especificaci\u00f3n.<\/p>\n<p><!--more--><\/p>\n<p style=\"text-align: justify;\">La <strong>sintaxis es mas limpia<\/strong>, gracias a que se trabaja con contenido anidado. Posee una mejor gesti\u00f3n de ficheros, y de reutilizaci\u00f3n de c\u00f3digo. Poseen mayor <strong>flexibilidad<\/strong> y mantenimiento. Como inconveniente dir\u00eda, que es necesario preparar un entorno de trabajo (no siempre) para su uso lo que conlleva tiempo y aporta algo de complejidad inicial a su uso.<\/p>\n<p>Comparativa entre dos de los mas extendidos\u00a0<strong>Sass<\/strong> y\u00a0<strong>LESS<\/strong><\/p>\n<p><strong>\u00bfCu\u00e1l de los dos mas conocidos es mejor?<\/strong><\/p>\n<p>Me quedo con Sass, pero LESS\u00a0posee ciertas ventajas respecto a Sass.<\/p>\n<p><strong>Instalaci\u00f3n.<\/strong><\/p>\n<p>Es igual de complicado instalar Sass y Less.<\/p>\n<p>Sass requiere de <a href=\"https:\/\/www.ruby-lang.org\/es\/\">Ruby<\/a>.<\/p>\n<p>Less dispone de una versi\u00f3n del lado de cliente en Javascript\u00a0para trabajar sin necesidad de disponer nada en el\u00a0lado del servidor.<\/p>\n<p><strong>Gesti\u00f3n de errores.<\/strong><\/p>\n<p>Sass es mas estricto en determinadas circunstancias dejando menor\u00a0margen de error al programador.<\/p>\n<p>Los errores del compilador en less son mas informativos e \u00fatiles.<\/p>\n<p><strong>Sintaxis.<\/strong><\/p>\n<p>Sass es mas consistente, posee mecanismos para construcci\u00f3n de estructuras condicionales, iteraciones, bucles, etc.<\/p>\n<p><strong>Anidamiento<\/strong><\/p>\n<p>Sass ofrece ventajas respecto a Less porque permite <strong>anidar variaciones de una misma propiedad y compuestas<\/strong>.<\/p>\n<p><strong>Variables y tipos de datos<\/strong><\/p>\n<p>Sass proporciona \u201clists\u201d y \u201cmaps\u201d, con capacidad de gesti\u00f3n avanzada mediante funciones predefinidas.<\/p>\n<p>Less posibilita reglas y selectores como un tipo de variables. Permite adem\u00e1s variables de variables e interpolaciones adicionales.<\/p>\n<p><strong>Operaciones y unidades<\/strong><\/p>\n<p>Sass genera al ser mas estricto m\u00e1s errores.<\/p>\n<p>Less presupone que la primera unidad des la que tiene prioridad en cualquier operaci\u00f3n.<\/p>\n<p><strong>Funciones predefinidas<\/strong><\/p>\n<p>Ambos poseen un set bastante amplio.<\/p>\n<p><b>Documentaci\u00f3n<\/b><\/p>\n<p>Less ofrece una mejor documentaci\u00f3n y selector de b\u00fasqueda.<\/p>\n<p><strong>Frameworks<\/strong><\/p>\n<p><a href=\"http:\/\/getbootstrap.com\/\">Bootstrap<\/a> soporta ambos.<\/p>\n<p>Los dos lenguajes ofrecen herramientas potentes, pero su elecci\u00f3n quedar\u00e1 determinada por nuestras preferencias. Si queremos flexibilidad o libertad es preferible Less, si deseas ser mas estricto Sass.<\/p>\n<p>Para poder trabajar con estos preprocesadores CSS es necesario disponer de un <strong>servidor web<\/strong> similar a Apache.<\/p>\n<p>Es necesario disponer de <strong>node.js<\/strong> para instalar otros componentes para trabajo con less y sass. Una vez instalado, dentro de node se puede instalar <a href=\"http:\/\/gruntjs.com\/\">Grunt<\/a>, para realizar de <strong>forma repetitiva determinadas tareas<\/strong>, como la <strong>compilaci\u00f3n<\/strong> del fichero LESS o Sass se cree el fichero o ficheros CSS. <strong>Con Grunt nos ahorramos trabajo<\/strong>.<\/p>\n<p>Estos programas se instalan desde una <strong>terminal o cmd<\/strong>.<\/p>\n<p>Si tenemos instalado node, teclear\u00edamos <strong>node \u2013v<\/strong><\/p>\n<p>Una vez comprobada su funcionamiento, instalamos Grunt<\/p>\n<p><strong>sudo npm install \u2013g grunt-cli -&gt; Instalamos GRUNT<\/strong><\/p>\n<p>Despu\u00e9s si quisi\u00e9ramos usar Sass, tendr\u00edamos que instalarlo (less no es necesario).<\/p>\n<p>La instalaci\u00f3n de Sass se realiza desde Ruby on rails.<\/p>\n<p>Para comprobar que tenemos ruby instalado, desde una terminal:<\/p>\n<p><strong>ruby \u2013v<\/strong> -&gt;&gt; En un entorno mac o gnu Linux, seguramente lo tengamos de serie instalado.<\/p>\n<p><a href=\"http:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2016\/03\/Captura-de-pantalla-2016-03-08-a-las-22.56.44.png\" rel=\"attachment wp-att-8619\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-8619\" src=\"http:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2016\/03\/Captura-de-pantalla-2016-03-08-a-las-22.56.44.png\" alt=\"Ruby\" width=\"617\" height=\"501\" srcset=\"https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2016\/03\/Captura-de-pantalla-2016-03-08-a-las-22.56.44.png 617w, https:\/\/www.palentino.es\/blog\/wp-content\/uploads\/2016\/03\/Captura-de-pantalla-2016-03-08-a-las-22.56.44-300x244.png 300w\" sizes=\"auto, (max-width: 617px) 100vw, 617px\" \/><\/a><\/p>\n<p><strong>Sudo gem install sass<\/strong> -&gt; Es necesario usar el gestor de paquetes de <strong>ruby gem<\/strong>.<\/p>\n<p>Una vez instalado node, tendremos que configurar grunt, para ello existe un fichero llamado <strong>gruntfile.js<\/strong> donde se puede configurar su funcionamiento. Ojo tambi\u00e9n una vez instalado grunt, existir\u00e1 al lado un fichero <strong>package.json<\/strong>, con las dependencias necesarias que podemos terminar de instalar ejecutando <strong>npm install<\/strong><\/p>\n<p>Otra capacidad existente es la posibilidad de <strong>recargar el navegador autom\u00e1ticamente para comprobar los cambios de Grunt<\/strong>, para ello tendremos que instalar un <strong>plugin<\/strong> para nuestro navegador. Este plugin es capaz de entender las llamadas de Grunt, el nombre es <strong><a href=\"https:\/\/chrome.google.com\/webstore\/detail\/livereload\/jnihajbhpnppcggbcgedagnkighmdlei\">LiveRoad<\/a><\/strong> (para Chrome ,Firefox, &#8230;). El navegador se encargar\u00e1 de escuchar las ordenes de Grunt. Es necesario que dentro del fichero <strong>gruntfile.js<\/strong> se deje la opci\u00f3n dentro de watch, livereload a true.<\/p>\n<p>Por ejemplo, en CSS cuando queremos anidar o crear reglas realizamos un c\u00f3digo de la siguiente forma<\/p>\n<pre class=\"lang:css decode:true\">div a {}\r\ndiv p {}<\/pre>\n<p>El c\u00f3digo en preprocesador seria:<\/p>\n<pre class=\"lang:css decode:true\">div \r\n{ a{}\r\n  p{}\r\n}<\/pre>\n<p>&nbsp;<\/p>\n<p>Vemos en este min\u00fasculo ejemplo que <strong>no tenemos que repetir estructuras heredadas,<\/strong> y la<strong> visibilidad es mejor<\/strong>, entre otras muchas cosas mucho mas profesionales.<\/p>\n<p>Los <strong>Mixings<\/strong> son herramienta que nos permite combinar propiedades de diferentes estilos. Se crea una regla de CSS a partir de un selector, una vez creado el selector, podremos hacer uso de el en otro selector. Es similar a la herencia en <strong>OPP<\/strong>. Si existe c\u00f3digo que se comparte se puede usar tambi\u00e9n <strong>extends<\/strong>, pero mediante los mixins nos ofrece mas potencia que los extends, para no tener que repetir el uso de propiedades.<\/p>\n<p>Mediante el <strong>uso de variables<\/strong>, podemos realizar reemplazos program\u00e1ticos de la CSS. Mediante las <strong>estructuras de control<\/strong>, podemos agilizar la construcci\u00f3n de selectores.<\/p>\n<p>No solamente podemos trabajar de forma <strong>monitorizada<\/strong> con ruby con less o sass, sino que podemos emplear <strong>herramientas convencionales u online.<\/strong><\/p>\n<p><strong>Para LESS<\/strong>, desde la web <a href=\"http:\/\/lesscss.org\/usage\/#online-less-compilers\">lesscss.org\/usage\/#online-less-compilers<\/a><\/p>\n<p>Disponemos de compiladores less online (sugerencias) y editores GUI para less<\/p>\n<p><strong>Para Sass<\/strong><\/p>\n<p><a href=\"http:\/\/sass-lang.com\/install\">http:\/\/sass-lang.com\/install<\/a><\/p>\n<p>Existen aplicaciones <strong>GUI<\/strong> y modo comando.<\/p>\n<p>Este otro enlace inferior nos muestra una utilidad para trabajar con less, Sass y Coffescript desde Visual Studio.<\/p>\n<p><a href=\"http:\/\/www.mindscapehq.com\/products\/web-workbench\">www.mindscape.com\/products\/web-workbench<\/a><\/p>\n<p>La aplicaci\u00f3n <strong>Koala<\/strong> es un GUI para Less, Sass, Compass y Coffescript, y puede ser ejecutada en cualquier plataforma.<\/p>\n<p><a href=\"http:\/\/Koala-app.com\">Koala-app.com<\/a><\/p>\n<p>Para Sass existe otra denominada scout<\/p>\n<p><a href=\"http:\/\/Mhs.github.io\/scout-app\">Mhs.github.io\/scout-app<\/a><\/p>\n<p>Como compiladores online existen otros 2 bastante conocidos para Sass como son:<\/p>\n<p><a href=\"http:\/\/Codepen.io\/pen\">Codepen.io\/pen<\/a><\/p>\n<p>Otra es <a href=\"http:\/\/sassmeister.com\">sassmeister.com<\/a><\/p>\n<p>En resumen, LESS\u00a0y Sass nos van a permitir ahorrar tiempo en la construcci\u00f3n de proyectos trabajando con el <strong>Frontend<\/strong> donde empleemos\u00a0CSS. El resultado es el mismo si trabajamos sin estos preprocesadores, pero la <strong>claridad y legibilidad<\/strong> de construcci\u00f3n, las <strong>herramientas disponibles para acelerar, ahorrar tiempo<\/strong> y construir la CSS sumado a la optimizaci\u00f3n , nos llevar\u00e1 a ser mas productivos y organizados.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Los preprocesadores CSS son herramientas inform\u00e1ticas que nos permiten convertir un determinado lenguaje a otro tipo de ficheros, conocidos como hojas de estilo en cascada o CSS. Los m\u00e1s populares y extendidos son LESS, Sass y Stylus. Por lo tanto lo que realizan es la conversi\u00f3n de un fichero (por ejemplo SCSS) con unas determinadas reglas y programaci\u00f3n a otro de tipo CSS compatible con los navegadores. Nos ofrecen nuevas caracter\u00edsticas que aportan mas versatilidad a la hora de crear las CSS. El resultado es el mismo, pero con una facilidad de construcci\u00f3n y claridad mayor. Cada preprocesador emplea su propio lenguaje, pero todos ellos exportan a CSS v\u00e1lido. Todos ellos, poseen un lenguaje muy similar al CSS, pero ampliando sus funcionalidades. El objetivo de todos ellos es generar un CSS compatible y acorde a la especificaci\u00f3n.<\/p>\n","protected":false},"author":1,"featured_media":4864,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[707],"tags":[208,708,709],"class_list":["post-8617","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-frontend","tag-css","tag-less","tag-sass"],"_links":{"self":[{"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/posts\/8617","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/comments?post=8617"}],"version-history":[{"count":6,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/posts\/8617\/revisions"}],"predecessor-version":[{"id":8624,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/posts\/8617\/revisions\/8624"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/media\/4864"}],"wp:attachment":[{"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/media?parent=8617"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/categories?post=8617"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.palentino.es\/blog\/wp-json\/wp\/v2\/tags?post=8617"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}