Y at-il des avantages de SASS sur LESS? [fermé]


36

J'essaie de faire des recherches sur ces pré-processeurs CSS.

Y a-t-il des avantages à utiliser sass sur moins en tant que préprocesseur CSS? Les facteurs que je recherche incluent la taille de la communauté, la maturité du projet logiciel, etc.

Je sais qu'il y avait une autre question liée à cela, mais ce n'était pas écrit de manière constructive et fermé.

Mise à jour

On dirait que bootstrap est maintenant passé à utiliser Sass

Réponses:


32

Chris Coyier a un résumé impressionnant de SASS vs LESS sur css-tricks.com . Cela vaut vraiment la peine d'être lu.

En ce qui concerne certaines de vos questions spécifiques:

Communauté

Je travaille entièrement avec SASS / Compass, je ne connais donc pas très bien la communauté de LESS, mais je n’ai pas vraiment besoin de la communauté de SASS. Leur documentation est fantastique et a résolu tous les problèmes que j'ai rencontrés jusqu'à présent.

Pour ce qui en vaut la peine, voici les statistiques SASS vs LESS que Chris a publiées dans son post, que j'ai actualisées pour les chiffres actuels:

Nombre de numéros en suspens sur MOINS: 121
Nombre de numéros en suspens sur Sass: 87

Demandes de traction en attente sur MOINS: 13
Demandes de traction en attente sur Sass: 8

Nombre de validations du dernier mois en MOINS: 49
Nombre de validations du dernier mois en Sass: 7

Il est à noter que ces chiffres étaient approximativement inversés au moment où Chris écrivait en mai 2012. Cela me dit qu'ils sont tous deux à peu près égaux en ce qui concerne l'activité de développement.

Maturité

Techniquement, Sass est plus âgé. Il est sorti en 2007, tandis que LESS est sorti en 2009. Cela dit, les comparaisons que j'ai déjà vues les ont placées à peu près au même niveau de "maturité" en ce qui concerne les fonctionnalités et autres.

Les deux ont également des cadres qui leur apportent plus d'outils. LESS a Less Framework et Centage (en plus, le bootstrap de Twitter est construit avec LESS). Sass a Compass, Gravity et Susy. Les deux ont probablement plus, si vous creusez pour eux, mais ce sont certaines des premières qui apparaissent lorsque vous effectuez une recherche.

Alors, y a-t-il de réelles différences?

Quand il s'agit d'écrire, pas vraiment. Si vous utilisez la syntaxe SCSS de type CSS dans Sass (au lieu de la syntaxe SASS de type Python), vous n’avez que les différences de syntaxe mineures typiques ( @vs $), mais elles sont pour l’essentiel identiques.

Les deux plus grandes différences de codage que j'ai trouvées sont les suivantes: a) comment ils gèrent les unités lorsqu'ils font des mathématiques et b) comment ils gèrent l'héritage. Lorsqu'on leur donne quelque chose comme 20px + 2em, LESS laissera tomber la deuxième unité et supposera que vous entendez la première (yeilding 22px), tandis que Sass émettra une erreur (en gros, tapez mismatch). Avec l'héritage, LESS le traite comme un mixin (je ne peux pas vraiment l'expliquer, alors voyez la section héritage de cet article sur Tuts + pour plus de détails).

Que l’on soit supérieur à l’autre dépend de la manière dont on préférerait que l’on gère les choses.

L’autre plus grande différence que je connaisse est comment et où chacun se compile par défaut. Sass utilise Ruby et compile sur le serveur, ce qui vous permet de stocker et d'envoyer le fichier CSS compilé au client. LESS utilise par contre le script less.js pour compiler le CSS à la volée. Cependant, avec l'utilisation de Node.js, LESS peut être compilé côté serveur de la même manière que Sass.

Laquelle?

Donc, s'ils sont fondamentalement les mêmes, lequel devriez-vous utiliser? Eh bien, à moins que vous n'aimiez vraiment la syntaxe SASS de type Python, ou que vous pensiez vraiment que la compilation côté client est la voie à suivre, ou que vous préfériez grandement un appel hérité plutôt que l'autre, il importera plus que vous préfériez avoir (ou avez déjà) Ruby ou Node.js installé.


2
+1 Beau résumé. Sauf si cela a été ajouté récemment, LESS n'a également rien de comparable à @extend
steveax

Le développement de LESS semble avoir considérablement augmenté ces derniers temps. Ils ajoutent une syntaxe @extend dans 1.5.0 (syntaxe: extend ()). Ils ajoutent également des cartes source entre autres.
WraithKenny

WraithKenny - Cela les place encore techniquement derrière Sass. Les cartes source standardisées sont dans les branches de test en ce moment (et il y a --debug-infoquelques versions de carte source non standard avec des commentaires de ligne pour Firebug et Chrome quelques versions en arrière depuis un certain temps, avant la sortie des versions standard), et les espaces réservés (en gros, @extend sans écrire réellement la classe à partir de laquelle étendre) sont dans la dernière version.
Shauna

@Shauna n'est pas sûr de savoir comment ils sont "techniquement" derrière ... LESS a des "cartes sources" non standard "depuis l'année dernière, et a déjà des cartes sources standard dans la dernière version stable, contrairement à Sass pour le moment.
Subhaze

@subhaze - Au moment des commentaires précédents, LESS n'avait pas la syntaxe étendue, il était donc toujours en retard sur cet aspect. De plus, Sass a ajouté la fonctionnalité "espaces réservés" dans les versions récentes stables. Cela dit, je ne ferai pas d’addenda tous les deux mois comparant les caractéristiques les plus pointues de chaque ensemble. Comme je l'ai dit dans ma réponse, ce sont à peu près les mêmes, et quand on ajoute une fonctionnalité que l'autre n'a pas, l'autre n'est généralement pas en retard.
Shauna

6

Je pense que votre choix peut dépendre au moins un peu de ce que vous faites ou utilisez; Je travaille principalement avec Rails et il prend en charge Sass pour son CSS au point qu’il soit activement inclus lors de la création d’un nouveau projet. Si vous souhaitez utiliser quelque chose comme le très populaire Bootstrap, qui utilise Less par défaut, vous n’avez pas à craindre, car il existe de nombreux joyaux populaires tels que bootstrap-sass qui vous permettent de l’utiliser dans votre projet.

Ceci est strictement anecdotique, mais chaque impression que j’ai eue personnellement est que Sass a une communauté plus large et plus de soutien, et très franchement, la documentation officielle de Sass est beaucoup plus longue et détaillée que celle de Less (augmenter la taille de la police et le remplissage pour tout ne fait pas un morceau de texte plus long). Si vous voulez entrer dans les détails, bien que je ne sois pas tout à fait familiarisé avec Less, basé uniquement sur l'examen des deux langues, Sass est le seul à posséder un héritage de sélecteur. Je suis sûr qu'il y a une autre différence sur laquelle les gens peuvent élaborer.

En fin de compte, tout le monde a ses préférences et si vous trouvez que l’une vous convient mieux que l’autre, vous devez absolument l’utiliser si elle peut faire ce dont vous avez besoin. Cependant, depuis que j'utilise Sass, j'ai certainement apprécié sa clarté et son efficacité, d'autant plus que je suis dans le domaine Rails.


D'accord, si vous êtes déjà sur Ruby, SASS a un sens. Je suis plus un gars de JavaScript, donc MOINS pour moi!
WraithKenny

5

Je ne sais pas si Less a quelque chose de comparable, mais l’un des principaux avantages de Sass est la bibliothèque Compass , qui vous fournit de nombreux idiomes CSS courants, des hacks standard nécessaires pour les navigateurs plus anciens et des fonctionnalités CSS3 sans nécessiter de préfixe de navigateur. mentionnez la génération automatique de CSS pour les images de sprite.

Un autre avantage - du moins pour moi - est que Sass permet une syntaxe de type Python que je trouve beaucoup plus lisible.


Comparable à Compass? Je ne sais pas, mais ils ont le Bootstrap de Twitter.
WraithKenny

Eh bien, ce sont des bêtes différentes. Bootstrap est un ensemble de conventions et de widgets, tandis que Compass propose une collection de mixins réutilisables
Andrea

De plus, Bootstrap est disponible dans Sass.
Shauna
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.