1 Anàlisi de LESS en la Web del 2021 Pau Comas Herrera Escola d’Enginyeria, Universitat Autònoma de Barcelona, Bellaterra 08193, Espanya Leaner Style Sheets (LESS) és un preprocessador de CSS que va ser creat al 2009 per solucionar les limitacions del llenguatge web d’estil CSS i així treballar en un entorn més eficient, mantenible i dinàmic. En aquest article examinem com ha evolucionat amb el pas dels anys i quin grau d’utilitat manté avui en dia, competint amb la progressió del propi CSS i altres preprocessadors. Revisem les seves principals característiques, avantatges, desavantatges i la seva situació en el context de programació web actual. Index Terms—LESS, preprocessament CSS, variables, mixins, nidificació, compilació, SASS, Stylus I. I NTRODUCCIÓ L recent creixement de les tecnologies web ha portat el llenguatge Cascading Style Sheets (CSS) als seus màxims de popularitat. Segons [1], avui en dia el 96.3% de les pàgines web l’utilitzen per a definir la seva estructura i estil d’una manera pròpia i atractiva pels usuaris. Part important de l’èxit que pugui tenir una pàgina (o inclús una franquícia de vàries webs) està en la qualitat i distinció que aporti el seu CSS respecte a la competència. No obstant, ja des de la seva creació van aparèixer dubtes per les seves possibles limitacions. Culshaw, Leventhal i Maloney [2] van informar sobre vàries, entre elles l’absència de variables. Majoritàriament no es va respondre ràpidament a la demanda de la comunitat programadora. Per exemple, l’any 2015 tant sols el 9% dels navegadors suportaven les variables en CSS3 [3]. Degut a les necessitats d’un CSS més complet, al 2009 va aparèixer Leaner Style Sheets (LESS), un preprocessador CSS que permetia escriure el nostre fitxer d’estil en un llenguatge extès amb més funcionalitats. Aquest arxiu podia ser compilat a CSS un cop acabat. Avui en dia es segueix utilitzant, actualitzat des del 2014 però mantenint gran part de les característiques originals. L’objectiu d’aquest article és analitzar si LESS actualment és recomanable. A la secció 2 analitzarem les seves característiques principals i com han envellit amb el pas del temps. La secció 3 será sobre desavantatges que presenta el seu ús. A la secció 4, veurem la seva competència i popularitat actual. Finalment, descriurem les conclusions extretes. E II. F UNCIONALITATS DE LESS En aquesta secció exposarem les característiques principals que diferencien LESS davant CSS3. Per cada una veurem el seu funcionament i si suposen un avantatge. A. Variables L’ús de variables és simple però suposa una millora substancial en el manteniment del codi. A continuació podem veure un exemple de com substituint atributs iguals per una variable LESS podrem controlar-los des del mateix lloc i fàcilment en cas de voler efectuar algun canvi. LESS @color: #4D926F; h1 { color: @color; } #header { color: @color; } compilació CSS h1 { color: #4D926F; } #header { color: #4D926F; } En l’actualitat hi ha variables a CSS, creant-les dins del selector :root i cridant-les com a var(--my-var). Segons Dave Gash de Google [3] la data aproximada de la seva acceptació generalitzada en els navegadors va ser l’any 2016 i per tant l’ús de LESS ja no suposa una millora en aquest aspecte. B. Mixins Els mixins són regles CSS que es poden incloure en altres regles CSS, evitant així la redundància del CSS natiu. Treballant amb projectes grans la llegibilitat del fitxer LESS serà molt millor: compilació CSS LESS .mixin1 { .mixin1 { color: blue; color: blue; border-radius: 5px; border-radius: 5px; } } .regla2 { .regla2 { color: blue; .mixin1() border-radius: 5px; background: white; background: white; } } També és possible crear mixins amb variables per paràmetre o cridar diferents mixins dins de noves regles. En CSS no hi ha res similar, ja que al 2017 es va intentar emular aquesta funcionalitat amb una regla anomenada @apply [4] però va acabar abandonant-se. C. Nidificació La nidificació ens permet organitzar la jerarquia de regles dins de selectors d’una manera intuïtiva i mantenible. El següent exemple és d’un cas bàsic, però a mesura que anem 2 afegint selectors dins de selectors la diferència és notòria: LESS compilació CSS #header { #header { padding: 60px; padding: 60 px; ul { } background: white; #header ul { } background: white; } } En ple 2021, encara no és possible la nidificació eficient de regles en el CSS natiu, si bé ara es troba en desenvolupament [5]. Es considera un dels principals avantatges de LESS degut a la millora en la mantenibilitat del codi. D. Operacions i condicions LESS ens permet fer operacions matemàtiques, condicions if/else i bucles [6], entre altres coses. Aquestes funcionalitats no es troben a CSS i aporten un grau de diversitat més però no les podem considerar importants. Al cap i a la fi, el fitxer CSS serà compilat un sol cop i desapareixeran, pel que si volem un control dinàmic del CSS en temps d’execució web haurem de seguir fent-ho en JavaScript. III. D ESAVANTATGES L’inconvenient més rellevant de LESS es troba en la seva naturalesa. Al no ser reconegut pels navegadors web, el procés de compilació a CSS provoca un retard. Això sí, hi ha molts compiladors diferents disponibles per a LESS (Ruby, PHP, .NET, OS X, JS) i per tant la disponibilitat no en resulta un problema. D’altra banda, un punt negatiu en el que coincideixen alguns dissenyadors web [7], [8], és la generació de CSS enormes degut a la nidificació massiva. Aquest fet augmenta l’espai i el temps necessari per la compilació CSS. No obstant, hi ha cert debat en si realment es pot considerar un desavantatge important. Per a l’enginyer Vitaly Belman [9] cap dels desavantatges proposats entorn la nidificació LESS són preocupants, incloent entre ells el tamany dels CSS generats. L’últim inconvenient comú en la comunitat és que LESS afegeix una capa de complexitat afegida i per tant més risc. Tantmateix, LESS floreix a partir de CSS seguint la demanda de la comunitat programadora i la majoria de les seves innovacions busquen la ressemblança amb els llenguatges de programació clàssics. S’ha d’aprendre i configurar, peró ès un període curt que a la llarga estalvia temps respecte a treballar en CSS directament. IV. C OMPETÈNCIA I POPULARITAT En l’actualitat hi ha molts preprocessadors CSS, un d’ells anomenat Syntactically Awesome Stylesheets (SASS). Bootstrap, el marc de treball més utilitzat en front-end, l’utilitza per davant de LESS. Els dos ofereixen un ventall de característiques similars, però mantenen certes diferències. Per exemple, segons [10] LESS està millor documentat i és més fàcil d’aprendre mentre que SASS el supera en l’aplicació d’estructures de control if/else o bucles. En el passat SASS no podia compilar fitxers natius de CSS degut a que els selectors es definien amb indentació en lloc de claus. El creixement de LESS, que sí utilitza claus, va portar als desenvolupadors de SASS a rectificar i crear Sassy CSS (SCSS), la versió de SASS pels que prefereixen aquesta sintaxi i competint encara més directament amb LESS. Informes dels últims anys demostren la traslació de LESS cap a SASS de la comunitat programadora. Les diferències entre una enquesta de 2012 feta per Chris Coyler [11] i un informe analitzant les tendències de Google i GitHub de 2019 [12] ens demostren que el canvi ha sigut real i, encara que LESS manté una bona valoració i gruix d’usuaris, ja no és el preprocessador dominant. Això sí, tot i que ha perdut bona part del mercat, alternatives més recents com Stylus queden encara enrere [12]. V. C ONCLUSIONS En aquest article hem pogut analitzar el valor actual del llenguatge LESS i com ha canviat en comparació a fa uns anys. Hem vist com CSS està treballant per equiparar-se a les característiques principals de LESS i, encara que ja ens permet crear variables, de moment segueix sense oferir altres característiques claus com la nidificació o la reutilització de regles. També hem vist que utilitzar LESS té els seus desavantatges, si bé no són suficients per descartar el seu ús. Finalment, s’ha examinat com l’amenaça principal que té LESS és SASS, que l’ha superat en termes de popularitat i que ofereix el mateix o més com a preprocessador. No obstant, LESS es manté com una opció sòlida i lleument més senzilla per a començar a aprofitar les virtuts dels preprocessadors de CSS. R EFERÈNCIES [1] W3techs. (2021, June 8). Usage statistics of CSS for websites [Online]. Available: https://w3techs.com/technologies/details/ce-css [2] S. Culshaw, M. Leventhal and M. Maloney. (1997, Nov 28). Limitations of CSS for Complex Applications. Webreview [Online]. Available: https://w3techs.com/technologies/details/ce-css [3] D. Gash. (2017, Apr 19). CSS Variables — No, really! Medium [Online]. Available: https://medium.com/dev-channel/css-variables-noreally-76f8c91bd34e [4] T. Atkins-Bittner. (2017, May 8). Why I Abandoned @apply. Xanthir [Online]. Available: https://www.xanthir.com/b4o00 [5] W3C Editor’s Draft. (2021, May 17). CSS Nesting Module [Online]. Available: https://drafts.csswg.org/css-nesting-1/ [6] Tutorialspoint. (2021). LESS - Loops [Online]. Available: https://www.tutorialspoint.com/less/less_loops.htm [7] S. Mhatre. (2020, Aug 17). Interview Series 1: Advantages and disadvantages of using CSS preprocessors. Coder Who Dreams [Online]. Available: https://medium.com/dev-channel/css-variables-noreally-76f8c91bd34e [8] A. Silver. (2015, May 5). The disadvantages of CSS preprocessors. Adam Silver [Online]. Available: https://adamsilver.io/blog/the-disadvantagesof-css-preprocessors/ [9] V. Belman. (2015, Apr 26). The benefits of nesting in LESS/SASS. Medium [Online]. Available: https://medium.com/@vitalyb/nestingbenefits-in-less-sass-371fd447fc59 [10] J.D. Pérez. (2019, Nov 20). Sass vs Less. OpenWebinars [Online]. Available: https://openwebinars.net/blog/sass-vs-less/ [11] C. Coyier. (2012, June 11). Poll Results: Popularity of CSS Preprocessors. CSS-Tricks [Online]. Available: https://css-tricks.com/poll-resultspopularity-of-css-preprocessors/ [12] D. Kryukov. (2019, July 2). Sass vs. Less: Which CSS Preprocessor to Choose. Soshace [Online]. Available: https://soshace.com/sass-vs-lesswhich-css-preprocessor-to-choose-in-2019/