in welke webtoepassingen wordt het noodzakelijk

advertisement
IN WELKE WEBTOEPASSINGEN WORDT HET NOODZAKELIJK OM
SASS OF LESS TE INTEGREREN
PROMOTOR: MEVR LIES PINKET
ONDERZOEKSVRAAG UITGEVOERD DOOR
SAM BAUTERS
VOOR HET BEHALEN VAN DE GRAAD VAN BACHELOR IN DE
NEW MEDIA AND COMMUNICATION TECHNOLOGY
HOWEST | 2015-2016
Bachelorproef Sam Bauters
3
Woord vooraf
Mijn naam is Sam Bauters en ik studeer New Media & Communication Technology (NMCT) aan de
hogeschool West-Vlaanderen (Howest) Kortrijk. Van kindsbeen af ben ik geboeid door IT en volg ik de
laatste nieuwe technologieën op de voet. Ik koos voor de NMCT omdat deze opleiding een brede waaier
heeft aan modules die kunnen gevolgd worden, omdat ik op dat moment nog niet goed wist welke
richting als IT’er ik wou uitgaan, leek NMCT mij de ideale oplossing.
Momenteel loop ik 13 weken stage bij het bedrijf Endare uit Gent. Endare helpt organisaties hun bedrijf te
transformeren, ze adviseren over de te volgen strategie en bouwen een actieplan met concrete doelen en
mijlpalen. Ze bouwen robuuste, kosten-efficiënte mobiele oplossingen met voorspelbare ROI en
experimenteren met de nieuwste technologieën voordat ze de massamarkt bereiken. Door te kijken naar
de “big picture”, bouwen ze oplossingen die klaar zijn voor de toekomst.
Mijn stageopdracht bestaat uit het realiseren van een klantenportaal die met der tijd kan worden gebruikt
door Endare. Wat de opdracht interessant maakt is dat ik zo goed als volledige controle heb en het
project van 0 mag opbouwen. Voor de backend oplossing gebruik ik Node.JS, voor de frontend zal ik
gebruik maken van 1 in deze bachelorproef besproken preprocessors, dit sluit dan weer aan op mijn
bachelorproef.
Graag wil ik alvast Endare bedanken om mij de kans te bieden kennis te vergaren over het opstarten en
voltooien van een volwaardig project. Tot slot wil ik ook mijn stagebegeleider Sander Goossens, de
collega’s met in het bijzonder Steven Van Poucke en Mathias Van Houtte, en mijn stagementor Lies Pinket
bedanken voor de begeleiding, raadgeving en feedback doorheen dit semester.
in welke webtoepassingen wordt het noodzakelijk om sass of less te integreren?
Bachelorproef Sam Bauters
4
Abstract
Deze bachelorproef is gericht op bedrijven en developers die hun projecten met behulp van
preprocessors naar een hoger niveau willen tillen.
Webapplicaties zijn niet meer weg te denken uit ons digitale leven. Je maakt er soms gebruik van zonder
dat je het zelf door hebt. Natuurlijk ontstaan deze applicaties niet zomaar. Deze webapplicaties worden
ontwikkeld door webdevelopers. Om een aantrekkelijke applicatie te maken wordt er gebruik gemaakt
van meerdere tools. Deze tools nemen een heleboel werk uithanden en zorgen voor het automatiseren
van verschillende handelingen. Doordat er wordt gebruik gemaakt van deze tools, kunnen
webdevelopers veel sneller en overzichtelijker programmeren. Logischerwijs zou dit moeten resulteren in
schonere code die onderhoudbaar is door meerdere personen.
Eerst en vooral wordt er kennis gemaakt met het begrip preprocessors en wat ze nu juist zijn. Ook gaan
we nader bekijken welke tools er zoal op de markt zijn om deze processors nog makkelijker te maken en
krijg je aan de hand van enkele voorbeelden een beter inzicht hoe je aan de slag moet gaan met
preprocessors. Met behulp van voorbeelden en de voor-en nadelen kan er een besluit gevormd worden.
De tools kunnen een meerwaarde bieden bij het optimaliseren in het development proces en zal code
schrijven vergemakkelijken.
in welke webtoepassingen wordt het noodzakelijk om sass of less te integreren?
Bachelorproef Sam Bauters
5
Verklarende woordenlijst
W3C: Het World Wide Web Consortium is een organisatie die de web standaarden voor het World Wide
Web ontwerpt, zoals HTML, XHTML, XML, CSS.
DRY: DRY staat voor Don't Repeat Yourself. De term is afkomstig uit de softwareontwikkeling, waar het
verwijst naar het minimaliseren van herhaling van informatie.
Watcher: Een watcher houdt voortdurend de SASS of LESS file in het oog zodat wanneer er iets wordt
aangepast, deze meteen kan worden geüpdatet.
Snippets: Snippet is een term voor kleine herbruikbare code.
Vendor-prefix: Vendor prefixes worden meestal toevoegd door browsers om aan te geven dat het gaat
om experimentele CSS eigenschappen.
CSS Guards: Guards worden gebruikt om warden, nummers of argumenten te vergelijken met expressies.
Kommagescheiden bestand: Een kommagescheiden bestand, of CSV-bestand, in het Engels commaseparated values, is een specificatie voor tabelbestanden.
Ruby gem: RubyGems is een package manager dat een standaard aanbiedt voor het uitvoeren van Ruby
programma’s en bibliotheken.
Python: Programmeertaal ontwikkeld door Guido Van Rossum
Perl: Programmeertaal met eigenschappen van C en UNIX-scripttalen ontwikkeld door Larry Wall
Ada: Ada is een gecompileerde programmeertaal bedoeld voor embedded en real-time systemen.
Eiffel: Zuiver objectgeoriënteerde programmeertaal die C broncode kan genereren
Package manager: Een package manager is een collectie van softwaretools die het proces van
installeren, upgraden, configureren en verwijderen van computer programma’s automatiseert
Prerelease version: Versie van een programma die nieuwe features kan bevatten die nog niet helemaal
op punt staan en daarom nog niet 100% betrouwbaar zijn.
Minificatie: Het proces van het verwijderen van alle onbelangrijke karakters zonder afbraak te doen aan
functionaliteit
Github: GitHub is een website die gebruikmaakt van Git om in groepen aan softwareontwikkeling te
doen. Het werd geschreven met Ruby on Rails
Repository: Een repository is een faciliteit voor het opslaan en beheren van digitale informatie (objecten)
in een via internet toegankelijke vorm.
Scaffolding tool: Scaffolding is een framework dat toelaat om basis CRUD operaties uit te voeren met
databases met weinig of geen code.
Boiler-plates: Een boilerplate is een geheel dat opnieuw kan worden gebruikt in een nieuwe context of
applicatie
Grunt: Grunt is een task runner die zorgt voor het automatiseren van verschillende taken
in welke webtoepassingen wordt het noodzakelijk om sass of less te integreren?
Bachelorproef Sam Bauters
Bower: Bower is een frontend package-maanger, die instaat voor het beheren van een project
Linting: Linting is een process dat de code analyseert op fouten
HSL: Kleurenruimte die wordt gebruikt om kleuren te definiëren. Hue, Saturation, Lightness
HSV: Is een model om kleuren te kunnen beschrijven.
in welke webtoepassingen wordt het noodzakelijk om sass of less te integreren?
6
7
Bachelorproef Sam Bauters
Figurenlijst
Figuur 1: CSS Versies ...................................................................................................................................................... 13
Figuur 3: Codekit interface ........................................................................................................................................... 16
Figuur 4: Extenden van selectoren .............................................................................................................................. 21
Figuur 5: Ruby programmeertaal (bron: http://www.ruby-lang.org) ................................................................... 22
Figuur 6: Ruby installer selecteren .............................................................................................................................. 22
Figuur 6: opdrachtprompt installatie SASS............................................................................................................... 23
Figuur 7: gegenereerde lijst met sass versies ............................................................................................................ 23
Figuur 8: Mixture Figuur 9: Scout Figuur 10: Koala Figuur 11: CodeKit Figuur 12: Compass Figuur 13: Prepos
........................................................................................................................................................................................... 24
Figuur 14: Logische mappenstructuur voor SASS files ........................................................................................... 25
Figuur 15: scout GUI
Figuur: 16: Scout project toevoegen .............................................................................. 26
Figuur 16: Scout houdt het project in het oog .......................................................................................................... 27
Figuur 17: compilatie fout in scout ............................................................................................................................. 27
Figuur 18: Yeoman workflow ........................................................................................................................................ 28
Figuur 19: Yeoman commando interface .................................................................................................................. 29
Figuur 20: Commentaar in SASS.................................................................................................................................. 31
Figuur: 21: LESS............................................................................................................................................................... 32
Figuur 22: LESS in PHPSTORM ..................................................................................................................................... 33
Figuur 23: Node.JS website .......................................................................................................................................... 35
Figuur 24: NPM ................................................................................................................................................................ 36
Figuur 25: SimpLESS
Figuur 26: Crunch ........................................................................................................ 37
Figuur: 27: Font Awesome ............................................................................................................................................ 40
Figuur 28: HSL & HSV ..................................................................................................................................................... 41
Figuur: 29: Cardinal ........................................................................................................................................................ 42
Figuur 30: Ionic................................................................................................................................................................ 43
Figuur 31: Semantic Grid System ................................................................................................................................ 43
Figuur 32: SASS Documentatie .................................................................................................................................... 45
Figuur 33: LESS Documentatie .................................................................................................................................... 45
figuur 34: SASS foutmelding ......................................................................................................................................... 47
in welke webtoepassingen wordt het noodzakelijk om sass of less te integreren?
Bachelorproef Sam Bauters
8
figuur 35: LESS foutmelding ......................................................................................................................................... 47
in welke webtoepassingen wordt het noodzakelijk om sass of less te integreren?
Inhoudsopgave
Woord vooraf .................................................................................................................................................................3
Abstract ...........................................................................................................................................................................4
Verklarende woordenlijst ............................................................................................................................................5
Figurenlijst ......................................................................................................................................................................7
Inhoudsopgave..............................................................................................................................................................9
Inleiding ....................................................................................................................................................................... 12
1.
2.
CSS ............................................................................................................................................................................ 13
1.1
Wat is css? ....................................................................................................................................................... 13
1.2
Wie onderhoudt CSS? ................................................................................................................................... 13
1.3
CSS versies ...................................................................................................................................................... 13
Preprocessors ......................................................................................................................................................... 14
2.1
Introductie tot Preprocessors ..................................................................................................................... 14
2.2
Wat zijn Preprocessors? ............................................................................................................................... 14
2.3
Waarom preprocessors gebruiken? ........................................................................................................... 15
2.3.1
Je code is makkelijker te onderhouden ........................................................................................... 15
2.3.2
Gemakkelijk op te zetten ..................................................................................................................... 15
2.3.3
Bespaar tijd ............................................................................................................................................ 15
2.3.4
Project modulair opbouwen ............................................................................................................... 15
2.4
Misvattingen over preprocessors ............................................................................................................... 16
2.4.1
Je moet een expert zijn in command line ........................................................................................ 16
2.4.2
Je moet je ontwikkelmethode hoe je CSS schrijft aanpassen. .................................................... 16
2.4.3
Waarom CSS niet direct schrijven? .................................................................................................... 16
2.4.4
SASS vergt de installatie van meerdere programma’s .................................................................. 16
2.5
Kenmerken van preprocessors ................................................................................................................... 17
2.5.1
Variabelen ............................................................................................................................................... 17
2.5.2
Nesting .................................................................................................................................................... 17
2.5.3
Import ...................................................................................................................................................... 18
2.5.4
Mixins ....................................................................................................................................................... 18
2.5.5
Extend / Inheritance ............................................................................................................................. 19
2.5.6
Operatoren ............................................................................................................................................. 19
2.5.7
Lussen...................................................................................................................................................... 20
2.6
Problemen met preprocessors ................................................................................................................... 20
Bachelorproef Sam Bauters
3
2.6.1
Problemen met Mixins ......................................................................................................................... 20
2.6.2
Het extenden van selectoren kan de file onderhouden moeilijker maken ............................... 21
SASS .......................................................................................................................................................................... 22
3.1
SASS installeren ............................................................................................................................................. 22
3.1.1
3.1.2
Ruby ..................................................................................................................................................... 22
Ruby installeren ..................................................................................................................................... 22
3.2
Installatie ......................................................................................................................................................... 23
3.3
Andere versies van SASS bekijken .............................................................................................................. 23
3.4
Alternatief: installatie via GUI ...................................................................................................................... 24
3.5
Stel een watcher in op je SASS file ............................................................................................................. 25
3.6
Organiseren van SASS bestanden .............................................................................................................. 26
3.7
Alternatief op command line: Scout .......................................................................................................... 26
3.8
Problemen met Scout................................................................................................................................... 27
3.9
Automatiseren van de workflow................................................................................................................. 28
3.9.1
Yeoman ................................................................................................................................................... 28
3.9.2
Installeren van Yeoman ....................................................................................................................... 29
3.10
Data Types ...................................................................................................................................................... 30
3.10.1
4
10
Strings ..................................................................................................................................................... 30
3.11
Commentaar in SASS ................................................................................................................................... 31
3.12
Interpolatie ..................................................................................................................................................... 32
LESS .......................................................................................................................................................................... 32
4.1
Client-Side variatie ........................................................................................................................................ 33
4.2
Server-Side Variatie ....................................................................................................................................... 34
4.2.1
4.3
Compileren van een LESS bestand.................................................................................................... 34
Node.JS ........................................................................................................................................................... 35
4.3.1
NPM .......................................................................................................................................................... 35
4.4
Comprimeren en minimaliseren van CSS ................................................................................................. 36
4.5
Alternatief: Grafische User Interface .......................................................................................................... 37
4.6
Commentaar in LESS .................................................................................................................................... 38
4.6.1
Geneste commentaar........................................................................................................................... 38
4.6.2
Speciale commentaar .......................................................................................................................... 38
4.7
Lazy loading .................................................................................................................................................... 38
4.8
Ingebouwde functies .................................................................................................................................... 39
4.8.1 Javascript ........................................................................................................................................................ 39
in welke webtoepassingen wordt het noodzakelijk om sass of less te integreren?
Bachelorproef Sam Bauters
11
4.8.2
List Functies............................................................................................................................................ 39
4.8.3
Kleur functies ......................................................................................................................................... 40
4.9
LESS gebruiken in frameworks ................................................................................................................... 41
4.9.1
Cardinal CSS ........................................................................................................................................... 42
4.9.2 Ionic................................................................................................................................................................. 43
4.9.3 Semantic Grid System ................................................................................................................................. 43
5
Stappenplan SASS of LESS .................................................................................................................................. 44
5.1
Installatie ......................................................................................................................................................... 44
5.2
Taal ................................................................................................................................................................... 44
5.3 Documentatie ....................................................................................................................................................... 45
5.4
Extensies.......................................................................................................................................................... 46
5.5
Fout afhandeling ........................................................................................................................................... 46
5.6
Overzicht SASS vs LESS ................................................................................................................................ 47
5.7
Conclusie ......................................................................................................................................................... 48
Referentielijst .................................................................................................................................................................. 49
Figuur Referentielijst...................................................................................................................................................... 51
in welke webtoepassingen wordt het noodzakelijk om sass of less te integreren?
Bachelorproef Sam Bauters
12
Inleiding
Preprocessors zijn de dag van vandaag niet meer weg te denken bij klein- en grootschalige projecten en
wint dag na dag aan populariteit onder de ontwikkelaars. Om steeds mee te zijn met de laatste nieuwe
trends worden er geregeld nieuwe versies uitgebracht voor zowel SASS als LESS. Natuurlijk zijn er
meerdere preprocessors beschikbaar dan laatstgenoemden maar deze 2 steken er momenteel met kop
en schouders bovenuit.
Wanneer we gaan kijken naar 1 van de hoofddoelen van een bedrijf, dan is dat een robuust product met
schone code afleveren en liefst nog zo snel mogelijk, want het hoofddoel van een bedrijf blijft winst en
omzet draaien. Het gebruik van een preprocessor kan hier zeker toe bijdragen. Een css-preprocessor
maakt het mogelijk snel ‘schone’ CSS code te schrijven en gebruik te maken van mogelijkheden die
normaal gesproken veel tijd in beslag nemen. Ook wijst de preprocessor je op eventuele syntax-fouten
die je maakt en kun je de CSS makkelijk minimaliseren. Dit scheelt weer in de laadtijd van de website.
In deze bachelorproef zetten we de preprocessors SASS en LESS lijnrecht tegenover elkaar, bekijken hun
mogelijkheden, raakvlakken en onderlinge verschillen. Naast de features die beide preprocessors
bevatten, bekijken we ook nader hoe je beide kan installeren en gebruiken aan de hand van een grafische
user interface, in plaats met het gebruik van de commandolijn.
Het eerste deel zal zich richten tot wat preprocessors zijn met een beetje geschiedenis over het ontstaan
van CSS. Het tweede deel zal zich buigen over SASS met onder andere de installatie, data variabelen,
bestanden organisatie en interpolatie. Aansluitend gaan we over tot LESS met onder andere hoe de files
worden geminimaliseerd en welke functies die zoal bevat. Tot slot gaan we over tot een stappenplan en
persoonlijk besluit waar je het antwoord zal kunnen afleiden met betrekking tot de bachelorproef titel.
in welke webtoepassingen wordt het noodzakelijk om sass of less te integreren?
Bachelorproef Sam Bauters
1.
13
CSS
1.1 Wat is css?
Cascading Style Sheets, ook wel bekend als CSS, is een designtaal bedoeld om het proces tot het maken
van een presentabele webpagina te vergemakkelijken.
CSS bepaalt de look and feel van de webpagina. Met het gebruik van CSS heb je controle over de kleur
van je tekst, het lettertype, de plaatsing van je kolommen en nog veel meer.
CSS is makkelijk om te leren en te begrijpen en beheert de volledige opmaak van je HTML pagina. In de
meeste gevallen wordt CSS gecombineerd met HTML, XHTML en Javascript.
1.2 Wie onderhoudt CSS?
CSS is uitgevonden en wordt onderhouden door een groep van mensen binnen het W3C genaamd de CSS
Working Group. De CSS Working Group creëert documenten genaamd specifications. Wanneer een
specificatie officieel is goedgekeurd door de W3C leden, wordt het een recommendation.
Deze goedgekeurde specifications worden recommendations genoemd omdat het W3C geen controle
heeft over de implementatie van de taal. Onafhankelijke bedrijven en organisaties maken deze software.
1.3 CSS versies
CSS1 werd vrijgegeven door het W3C als recommendation in december 1996. Deze versie beschreef de
CSS taal alsook de simpele visuele opmaak voor alle HTML tags.
CSS2 werd een W3C recommendation in mei 1998 en bouwt verder op CSS1. Deze versie voegt
ondersteuning toe voor specifieke stylesheets zoals printers, downloadbare fonts, positionering en
tabellen.
CSS3, de meest recente versie die reeds in 1999 voor het eerst werd vrijgegeven bestaat uit modules. Het
bevat nog steeds de oude specificaties maar deze werden gesplitst in kleinere modules. Daarnaast
worden er nog steeds nieuwe modules toegevoegd.
Figuur 1: CSS Versies
in welke webtoepassingen wordt het noodzakelijk om sass of less te integreren?
Bachelorproef Sam Bauters
2.
14
Preprocessors
2.1 Introductie tot Preprocessors
HTML5 en CSS3 veranderen de webpagina’s hoe we ze vandaag opbouwen. CSS3 voorziet de developer
van geavanceerde features zoals gradients, animations, transitions en nog veel meer. Deze features
kunnen heel handig zijn maar verhogen wel de complexiteit en het wordt moeilijker om de CSS code te
onderhouden.
Naast de complexiteit wordt het ook moeilijker om CSS code te schrijven, developers moeten vaak
repetitief werk verrichten zoals zoeken achter kleurcodes en het definiëren van margins of paddings. Deze
kleine repetitieve taken nemen veel tijd en beslag en remmen de developer af. Preprocessors zijn
hiervoor de ideale oplossing.
Preprocessors zijn het verlengstuk van de gewone CSS code, gelijk evoluerend met de moderne
developing standaarden. Om SASS of LESS efficiënt te kunnen gebruiken is het sterk aangeraden om
eerst CSS in zijn normale vorm aan te leren. CSS Preprocessors laten je toe om variabelen, functies,
operations maar ook selectors te nesten in je CSS code. Door de preprocessors kan je gebruik maken van
het DRY principe*, dit helpt om repetitieve code te voorkomen.
2.2 Wat zijn Preprocessors?
Een preprocessors leest de bronbestanden in, verwerkt deze en slaat ze dan uiteindelijk op in CSS
bestanden die onmiddellijk worden doorgestuurd naar de browser. Deze preprocessors stellen de CSS in
staat om de ondoeltreffendheid te filteren en de websites gemakkelijker en logischer op te bouwen.
Figuur 2: compileren van SASS code
* Don’t repeat yourself principe
in welke webtoepassingen wordt het noodzakelijk om sass of less te integreren?
Bachelorproef Sam Bauters
15
2.3 Waarom preprocessors gebruiken?
2.3.1 Je code is makkelijker te onderhouden
Het is mogelijk om variabelen, mixins en functions te gebruiken. Dit betekent dat je meerdere groepen
van waarden kan definiëren aan het begin van je stijldocument. Wanneer je later de kleuren wil wijzigen
hoef je dit maar op 1 plek te doen. Hieronder een voorbeeld.
@maincolor: #20aaff;
@subcolor: #4d88ff;
a{
@maincolor;
}
primary-nav {
background-color:@accentcolor;
}
2.3.2 Gemakkelijk op te zetten
Een preprocessor file voor je project is makkelijk op te zetten. Met SASS volstaat een simpel commando
om een watcher op je SASS files te zetten en elke keer je je file opslaat wordt deze onmiddellijk opnieuw
omgezet.
2.3.3 Bespaar tijd
Je zal versteld staan van hoeveel tijd je kan besparen door het gebruik van preprocessors. Je bent niet
meer verplicht om meerdere malen opnieuw dezelfde CSS syntax te schrijven.
2.3.4 Project modulair opbouwen
Wanneer U al meerdere projecten hebt gemaakt en dezelfde structurele elementen komen vaak terug, is
het handig om je stijlen op te delen in herbruikbare modules. Terugvallend op puntje 1 is het gemakkelijk
dat je op 1 centrale plaats de kleur kan veranderen dan dit te doen over de hele css file.
in welke webtoepassingen wordt het noodzakelijk om sass of less te integreren?
Bachelorproef Sam Bauters
16
2.4 Misvattingen over preprocessors
In dit onderdeel geef ik toelichting over de misvattingen die een ontwikkelaar tegenhouden om een
preprocessor te integreren in hun dagelijkse workflow.
2.4.1 Je moet een expert zijn in command line
Veel ontwikkelaars willen zo veel mogelijk de command line mijden. Om preprocessors te kunnen
gebruiken moet je maar een klein beetje kennis hebben, je hoeft slechts een simpel string commando te
kennen. Er zijn zelfs meerdere applicaties die dezelfde taak uitvoeren zonder dat je zelf de command line
hoeft te gebruiken.
2.4.2 Je moet je ontwikkelmethode hoe je CSS schrijft aanpassen.
Ontwikkelaars hebben een bepaalde flow hoe ze code schrijven en organiseren. Doordat de SCSS syntax
hetzelfde is als CSS, hoeven de ontwikkelaars hun manier van ontwikkelen niet te veranderen.
2.4.3 Waarom CSS niet direct schrijven?
Dit is de eerste reactie die veel ontwikkelaars hebben wanneer ze voor het eerst naar preprocessors
kijken. Wanneer je weinig kennis hebt van CSS zullen preprocessors je zeker niet beter helpen dan
gewone CSS, maar preprocessors helpen je wel om in een snelle en onderhoudbare manier code te
schrijven, aanknopend op het DRY principe.
2.4.4 SASS vergt de installatie van meerdere programma’s
Dat klopt, om SASS te kunnen gebruiken moet je Ruby en GIT installeren. Gelukkig kan CodeKit je hierbij
helpen. Download CodeKit, zet de watcher op je project folder en klaar. Wanneer je gebruik maakt van
Windows kan je LiveReload Alpha gebruiken. Dit vergemakkelijkt het proces om een preprocessor te
gebruiken.
Figuur 3: Codekit interface
in welke webtoepassingen wordt het noodzakelijk om sass of less te integreren?
Bachelorproef Sam Bauters
17
2.5 Kenmerken van preprocessors
In dit onderdeel gaan we door enkele kenmerken die preprocessors gemeenschappelijk hebben. Je zal
meerdere voorbeelden te zien krijgen van SASS & LESS die we verder in dit document zullen behandelen.
2.5.1 Variabelen
Variabelen kunnen je helpen om informatie zoals bv kleurcodes bij te houden om ze later te kunnen
hergebruiken in je stylesheet. In SASS wordt er gebruik gemaakt van het $ symbool om een variabele te
declareren.
$text-color:#333;
body {
color: $text-color;
}
Wanneer de code wordt gecompileerd naar gewone CSS, zal de waarde in text-color worden gebruikt als
color in de body.
body {
color: #333;
}
Verschillend van SASS wordt in LESS het @ symbool gebruikt om een variabele te declareren.
@text-color:#333;
body {
color: @text-color;
}
2.5.2 Nesting
De visuele pikorde op een pagina is niet zo duidelijk in CSS als in HTML. Preprocessors laten je toe om
CSS selectoren te nesten op de manier dat het in HTML gebeurd. Hieronder ziet U een voorbeeld van
nesting in SASS en LESS.
nav{
ul{
margin: 0 auto;
padding: 10px 15px;
}
}
Gegenereerd naar CSS ziet dit er zo uit:
nav ul{
margin: 0 auto;
padding: 10px 15px;
}
in welke webtoepassingen wordt het noodzakelijk om sass of less te integreren?
Bachelorproef Sam Bauters
18
2.5.3 Import
@import heeft een licht verschillende implementatie dan in gewone CSS. In plaats van op de server de file
op te halen, zal SASS de file ophalen en samenvoegen met de file die je aan het importeren bent. Dit
resulteert in 1 enkele CSS file die gebruikt kan worden door de browser. Stel dat je 2 SCSS files hebt
genaamd reset.scss en style.scss, dan kan je met onderstaand voorbeeld de stijlen samenvoegen
wanneer style.scss je hoofdfile is.
@import ‘reset’;
Body{
Background-color: F8F8FF;
}
Merk op dat er geen extensie wordt gedefinieerd bij het importeren van de SASS file. SASS vindt
automatisch de correcte file en importeert deze.
2.5.4 Mixins
Mixins laat je toe om CSS snippets te declareren die je kan hergebruiken doorheen je stylesheet. Mixins
zijn ook configureerbaar met behulp van parameters en standaardwaarden. Dit komt het best van pas
wanneer je gebruik maakt van vendor-prefixed syntax.
SASS
@include animation(15s, 5s, changecolor)
@mixin animation ($delay, $duration, $animation){
-webkit-animation-delay: $delay;
-webkit-animation-duration: $duration;
-webkit-animation-name: $animation;
}
LESS
@include animation(15s, 5s, changecolor)
@mixin animation (@delay, @duration, @animation){
-webkit-animation-delay: @delay;
-webkit-animation-duration: @duration;
-webkit-animation-name: @animation;
}
in welke webtoepassingen wordt het noodzakelijk om sass of less te integreren?
Bachelorproef Sam Bauters
19
2.5.5 Extend / Inheritance
Preprocessors geven je de mogelijkheid om collections van CSS eigenschappen te delen tussen 1 of
meerdere selectors. Dit helpt je het DRY principe toe te passen.
SASS
.messageBox{
Font-size: 1em;
Line-height: 20px;
}
.warningBox{
@extend .messageBox;
color: red;
}
LESS
.messageBox{
Font-size: 1em;
Line-height: 20px;
}
.warningBox{
&:extend(.messageBox);
color: red;
}
2.5.6 Operatoren
Met preprocessors kan je standaard eenvoudige wiskundige bewerkingen uitvoeren zoals het omzetten
van meeteenheden, afronden en de minimum en maximum waarde uit een lijst halen.
SASS & LESS
.content{
float: right;
width: 900px / 800px * 100%;
}
in welke webtoepassingen wordt het noodzakelijk om sass of less te integreren?
Bachelorproef Sam Bauters
20
2.5.7 Lussen
Lussen zijn handig bij het overlopen van een array. LESS gebruikt hierbij CSS Guards en recursieve
mxinins.
SASS
@for $i from 1px to 5px{
.border-#{i}{
Border: $i solid blue;
}
}
LESS
.loop(@counter) when (@counter > 0) {
.loop((@counter -1));
.border-@(counter){ border: 1px * @counter solid blue;
}}
2.6 Problemen met preprocessors
In dit onderdeel wordt beschreven hoe sommige kenmerken van preprocessors verkeerd kunnen worden
gebruikt. Je zal zien dat de meeste problemen worden veroorzaakt door het verkeerd of te veel gebruik
van preprocessors kenmerken.
2.6.1 Problemen met Mixins
Zoals eerder beschreven zijn mixins herbruikbare code blokken die kunnen worden aangeroepen waar
nodig. Dit voorkomt dat je meerdere malen dezelfde code moet schrijven. Zie onderstaand voorbeeld.
SASS
@mixin notification{
color: #fff;
border-radius: 50%;
}
.warningNotification{
@include notification;
background: lightgrey;
}
.successNotification{
@include notification;
background: lightgrey;
}
in welke webtoepassingen wordt het noodzakelijk om sass of less te integreren?
Bachelorproef Sam Bauters
21
Deze code wordt gecompileerd naar gewone CSS code
.warningNotification{
color: #fff;
border-radius: 50%;
background: lightgrey;
}
.successNotification{
color: #fff;
border-radius: 50%;
background: lightgrey;
}
Merk op dat de code wordt gedupliceerd in voorgaand voorbeeld. Als deze mixin veelvuldig wordt
gebruikt doorheen de CSS file, zou dit resulteren in redundante code en de file bestandsgrootte negatief
beïnvloeden. SASS heeft hiervoor een alternatieve aanpak die niet wordt ondersteund door andere
preprocessors, genaamd extending. Door deze aanpak zal SASS de eigenschappen van meerdere
selectoren gelijktijdig instellen, door de selectoren te specifiëren in een kommagescheiden (commaseperated) bestand.
Deze aanpak voorkomt herhalende code. Echter wanneer te veel selectoren extended worden gebruikt,
kan dit performantie problemen opleveren. De resulterende CSS in het comma-seperated bestand zal te
veel selectoren bevatten, waardoor er perfomantie verlies zal optreden.
2.6.2 Het extenden van selectoren kan de file onderhouden moeilijker maken
Door veelvuldig gebruik te maken van het extenden van klasses of het gebruiken van mixins, wordt het
onderhouden van de file veel moeilijker doordat je gedeclareerde eigenschappen op meerdere plaatsen
gaat gaan gebruiken. De kans dat je een eigenschap aanpast zonder verdere gevolgen in je file is zeer
klein.
Figuur 4: Extenden van selectoren
in welke webtoepassingen wordt het noodzakelijk om sass of less te integreren?
Bachelorproef Sam Bauters
3
22
SASS
3.1 SASS installeren
Je kan SASS installeren via een Ruby gem, dit wil zeggen dat je Ruby moet installeren op je computer.
Wanneer je in het bezit bent van een MAC OS X kan je deze stap overslaan omdat Ruby standaard al
geïnstalleerd is.
3.1.1 Ruby
Figuur 5: Ruby programmeertaal (bron: http://www.ruby-lang.org)
Ruby is een programmeertaal, die ontworpen is om snel en makkelijk object georiënteerd te
programmeren. Ruby wordt het vaakst vergeleken met Python en Perl. Ruby is geïnspireerd op andere
talen zoals Ada en Eiffel, ook heeft Ruby verschillende mogelijkheden om tekstbestanden te verwerken en
systeemtaken af te handelen.
3.1.2 Ruby installeren
Er zijn verschillende manieren om Ruby te installeren:
 Wanneer je werkt op een UNIX gebaseerd besturingssysteem, is de makkelijkste manier door
gebruik te maken van de package manager. Deze Ruby versie is meestal niet de meest recente.
 Installers kunnen worden gebruikt om een specifieke of meerdere versies van Ruby te installeren.
Zo is er ook 1 voor Windows beschikbaar.
 Managers kunnen je helpen om te wisselen tussen meerdere Ruby installaties op je systeem.
In deze scriptie wordt gekozen voor de installer in Windows. Alles is voor handen om een volledige Ruby
omgeving op te zetten. Download het bestand, voer uit en klaar!
Figuur 6: Ruby installer selecteren
in welke webtoepassingen wordt het noodzakelijk om sass of less te integreren?
Bachelorproef Sam Bauters
23
3.2 Installatie
Nu dat Ruby geïnstalleerd is kan je beginnen met de installatie van SASS. Om dit te doen, open de
opdrachtprompt. Dit doe je als volgt:
 Ga naar start  Uitvoeren en typ ‘cmd’.
Eenmaal geopend kan je SASS installeren door het volgende commando te typen in de opdrachtprompt:
gem install sass
Figuur 6: opdrachtprompt installatie SASS
3.3 Andere versies van SASS bekijken
Je kan ook los van de laatste versie alle andere beschikbare versies van SASS bekijken door volgend
commando uit te voeren:
gem list sass –a –r
Dit commando vraagt aan Ruby om een lijst te genereren van alle gems die ‘sass’ in hun naam hebben
staan. Het –r attribuut zegt tegen Ruby om alle beschikbare versies op te zoeken. Het –a attribuut helpt
om een lijst van alle beschikbare versies te genereren.
Figuur 7: gegenereerde lijst met sass versies
in welke webtoepassingen wordt het noodzakelijk om sass of less te integreren?
Bachelorproef Sam Bauters
24
Wanneer je de laatste nieuwe features wil uitproberen die in een stabiele SASS versie nog niet
beschikbaar zijn, kan je overwegen om een prerelease versie te installeren.
sudo gem install sass –pre
Als je in een bepaald project een oudere versie gebruikt die features ondersteund die in de nieuwe versie
verouderd zijn, kan je overwegen om je huidige versie te verwijderen en de oudere versie opnieuw te
gebruiken. Om een SASS versie te verwijderen kan je volgend commando gebruiken:
gem uninstall sass –version versienummer
3.4 Alternatief: installatie via GUI
Naast het installeren via terminal kan je ook opteren om een programma te gebruiken met grafische
interface dat je code zal uitvoeren en compileren. Dit is vooral handig voor mensen die niet vertrouwd zijn
of schrik hebben om de opdrachtprompt te gebruiken. Er zijn zowel gratis als betalende programma’s
voor de verschillende platformen.
 Gratis
o Mixture (OSX) http://mixture.io/
o Scout (OSX, Windows, Linux) https://mhs.github.io/scout-app/
o Koala (OSX, Windows, Linux) http://koala-app.com/
 Betalend
o CodeKit (OSX) https://incident57.com/codekit/
o Compass (OSX, Windows, Linux) http://compass-style.org/
o Prepos (OSX, Windows, Linux) https://prepros.io/
Figuur 8: Mixture
Figuur 9: Scout
Figuur 10: Koala
Figuur 11: CodeKit
Figuur 12: Compass
Figuur 13: Prepos
in welke webtoepassingen wordt het noodzakelijk om sass of less te integreren?
Bachelorproef Sam Bauters
25
3.5 Stel een watcher in op je SASS file
Nu we klaar zijn met de installatie, moeten we aan SASS vertellen op welke files er een watcher moet
geplaatst worden. Dit wil zeggen, wanneer we bezig zijn met het editeren van een stylesheet, willen we
dat SASS de .scss file in het oog houdt en deze omzet naar leesbare taal .css taal voor onze browser elke
keer dat we een aanpassing doorvoeren. Dit kan via de terminal of via de genoemde programma’s in
hoofdstuk 3.4 ‘Alternatief: installatie via de GUI’.
Laten we eerst beginnen met de terminal optie toe te lichten. Het commando zal aan SASS zeggen om
een bepaalde .scss file in het oog te houden en deze om te zetten naar een .css file
Voorbeeld:
$ sass –watch style.scss:style.css
Wanneer we bovenstaand commando gaan uitvoeren, zal SASS automatisch elke verandering in het
bestand style.scss in het oog houden. Wanneer je op enter drukt zie je volgende boodschap verschijnen.
>>>> Sass is watching for changes. Press Ctrl-C to stop
Wanneer er een verandering wordt gedaan zal Sass automatisch style.css overschrijven. Met andere
woorden, elke keer dat het bestand wordt opgeslagen zal de CSS file worden geüpdatet.
Ook hoeven de bestandsnamen van beide files niet exact hetzelfde te zijn.
$ sass –watch style.scss:screen.css
Bovenstaand voorbeeld zou ook werken maar wordt niet aangeraden omdat dit verwarrend kan zijn.
Figuur 14: Logische mappenstructuur voor SASS files
in welke webtoepassingen wordt het noodzakelijk om sass of less te integreren?
26
Bachelorproef Sam Bauters
3.6 Organiseren van SASS bestanden
Figuur 14 toont een typische opstelling met een stylesheet map die een SASS gegenereerd .css bestand
bevat en een sass map die alle .scss bestanden bevat waarmee je aan het werken bent. Je kan er ook
voor kiezen om een watcher te plaatsen op de volledige map in plaats van op 1 enkele stylesheet. Met de
opstelling uit figuur 14 kan ik volgend watcher commando gebruiken om elke verandering in mijn project
met betrekking tot de .scss bestanden automatisch te compileren naar .css bestanden.
$sass –watch stylesheets/sass:stylesheets
3.7 Alternatief op command line: Scout
Zoals ik aangaf in hoofdstuk 3.4 ‘Alternatief: installatie via GUI’ is Scout een gratis programma gebouwd
op Adobe Air dat kan gedownload worden via: http://mhs.github.io/scout-app/
Wanneer u de applicatie opent zal u links onderaan een + icon zien staan dat je zal toestaan een project
toe te voegen.
Figuur 15: scout GUI
Figuur: 16: Scout project toevoegen
Zoals je kan zien, zijn er verschillende parameters die u kan invullen zoals stylesheet, javascript en
afbeelding mappen. Je kan ook een specifiek configuratiebestand voor de SASS compilatie instellen. We
kijken even verder tot bij het veld ‘Output modes’, wanneer je de standaardoptie ‘Development’ laat
staan, zal je geoptimaliseerde en leesbare code terugkrijgen maar er zal geen minificatie worden
toegepast. Naast Development kan je ook nog kiezen voor ‘compressed’ en ‘minified’.
In deze demo gaan we enkel gebruik maken van de eerste 2 velden ‘Input folder’ en ‘Output folder’.
Wanneer de velden zijn ingevuld kan je op de ‘play button’ naast de projectnaam drukken om de watcher
te starten.
in welke webtoepassingen wordt het noodzakelijk om sass of less te integreren?
Bachelorproef Sam Bauters
27
Figuur 16: Scout houdt het project in het oog
De watcher is nu ingesteld en klaar voor gebruik! Wanneer men nu een .scss file gaat aanpassen, zal scout
deze compileren naar leesbare .css voor onze browser. Wanneer er syntax fouten zouden te vinden zijn in
de te compileren code, zal de gebruiker onmiddelijk hierover worden geïnformeerd.
Figuur 17: compilatie fout in scout
3.8 Problemen met Scout
Scout is een gratis programma dat momenteel aan versie 0.7.1 zit, dit wil zeggen dat het programma nog
in een ontwikkelingsfase zit en er hier en daar nog enkele bugs kunnen optreden.
Enkele problemen die je kan afleiden uit hun GitHub repository
 Scout kan nogal traag en schokkerig zijn op Windows, ook zijn er personen die last hebben met
het compileren van grote bestanden.
 Het blijkt dat sommige installaties die al Ruby en SASS hebben geïnstalleerd een willekeurige
‘output mode’ krijgen toegewezen. Dit kan verholpen worden door het verwijderen van Scout,
Ruby en SASS. Wanneer je dan Scout opnieuw installeert, zouden de problemen moeten
verholpen zijn.
in welke webtoepassingen wordt het noodzakelijk om sass of less te integreren?
Bachelorproef Sam Bauters
28
3.9 Automatiseren van de workflow
3.9.1 Yeoman
Zoals Scout zijn er meerdere gratis programma’s die het mogelijk maken om je frontend development te
vergemakkelijken. Yeoman is er 1 van, deze tool doet meer dan enkel het compileren van de SASS
bestanden. Het is een systeem waarmee je je afbeeldingen kan optimaliseren, de browser automatisch
ververst en ga zo maar verder.
Yeoman is een scafollding tool en helpt bij het snel opstarten van een nieuw project. Het ondersteunt
meerdere tools om zo productief mogelijk te zijn. Bij Yeoman heb je ook de keuze tussen verschillende
generators beter gekend als ‘boiler-plates’. Dit kan gaan over een Bootstrap webapplicatie, maar
bijvoorbeeld ook over een Angular project. Generators zijn plug-ins die moeten worden geïnstalleerd aan
de hand van 1 enkel commando.
Yeoman heeft speciaal voor developers zijn eigen structuur ontwikkeld. Zo kan men nog sneller
webapplicaties bouwen zonder dat er manueel nog iets moet worden bijgevoegd. Dit zijn bijvoorbeeld de
set-ups voor Grunt en Bower die al zijn voorgeprogrammeerd zitten in de generators van Yeoman.
De meeste projecten van Yeoman zijn schaalbaar, ze kunnen zowel voor grote als kleine projecten
worden gebruikt. Net zoals Grunt en Bower, is Yeoman een opensource project. Dit zorgt ervoor dat je je
eigen generators kan aanmaken en dat er heel wat informatie over te vinden is.
Figuur 18: Yeoman workflow
in welke webtoepassingen wordt het noodzakelijk om sass of less te integreren?
Bachelorproef Sam Bauters
29
3.9.2 Installeren van Yeoman
Yeoman kan worden geïnstalleerd met npm. Yo, brower en grunt-cli kan met behulp van volgend
commando geïnstalleerd worden.
npm install –g yo grunt-cli bower
Wanneer de installatie voltooid is, kan de eerste generator geïnstalleerd worden. De standaard generator
is een web applicatie die HTML5 en bootstrap bevat.
Npm install –g generator-webapp
Nadat u de generator hebt geïnstalleerd, kan je starten met een nieuw project aan te maken. Eerst en
vooral maken we een nieuwe map aan op een locatie naar keuze en veranderen we in de terminal het
pad naar deze map. Nu kan je het Yo commando uitvoeren die een lijst zal weergeven van de reeds
geïnstalleerde generators.
Mkdir yeoman-demo
cd yeoman-demo
Yo webapp
Figuur 19: Yeoman commando interface
in welke webtoepassingen wordt het noodzakelijk om sass of less te integreren?
30
Bachelorproef Sam Bauters
3.10 Data Types
Een datatype, ook wel gegevenstype genoemd, is een soort informatie die vereist is voor elk data object.
De volgende tabel toont de verschillende data types die kunnen gebruikt worden in SASS
1
2
3
4
5
6
7
Data Type
Numbers
Representeert de integer types
Strings
Opeenvolging van karakters tussen
aanhalingstekens
Colors
Definiëren van kleuren
Booleans
Dit geeft waar of onwaar terug (True & False)
Nulls
Dit geeft geen waarde terug,
Wanneer iets niet is ingevuld
Space and Comma
Geeft waarden weer die gescheiden worden
door spaties en komma’s
Mapping
Mapt de ene waarde in de andere waarde.
Geeft de flow weer in het overbrengen van
data van de bron naar het target
Voorbeeld
4, 15.5
‘SASS Demo’,
“SASS Demo”
Yellow, #FDFDFD,
rgb(35,255,200)
5 < 2 is false
If(waarde==null)
{…}
2px solid #DFDFDF, 2 2 2 2px
Key: waarde1,
Key2: waarde2
3.10.1 Strings
String zijn een opeenvolging van karakters die worden weergegeven tussen enkele of dubbele
aanhalingstekens en kunnen worden gebruikt als tussenvoegsel met het gebruik van #{ }
Voorbeeld
Index.html
<html>
<head>
<title>Strings</title>
<link rel="stylesheet" type="text/css" href="style.css" />
<body>
<div class="container">
<h2>Voorbeeld gebruik van Strings</h2>
<p class="SassStrings">Dit is een voorbeeld hoe je Strings gebruikt binnen SASS.</p>
</div>
</body>
</html>
in welke webtoepassingen wordt het noodzakelijk om sass of less te integreren?
Bachelorproef Sam Bauters
31
Style.scss
$name: "SassStrings";
p.#{$name} {
color: blue;
}
Wanneer we op bovenstaand bestand een watcher plaatsen, wordt het bestand gecompileerd naar een
gewone CSS file.
Sass –watch C:\sassdemo\sass\style.scss:style.css
Style.css
p.SassStrings {
color: blue;
}
3.11 Commentaar in SASS
Net zoals in andere programmeertalen kan je in SASS enkele of meerdere lijnen code schrijven. Om een
enkele lijn commentaar te schrijven kan je gebruiken van de prefix //, wil je gebruik maken van meerdere
lijnen commentaar dan kan je opteren om /* */ te gebruiken.
Voorbeeld
// This is Single line comment
/* This is a
Multi line comment */
Wanneer het SASS bestand wordt gecompileerd, zal de commentaar met meerdere lijnen behouden
worden, de commentaar op een enkele lijn zal worden verwijderd.
Figuur 20: Commentaar in SASS
in welke webtoepassingen wordt het noodzakelijk om sass of less te integreren?
Bachelorproef Sam Bauters
32
3.12 Interpolatie
Wanneer je dynamisch selectoren of eigenschappen wil opbouwen, dan is interpolatie hetgeen je nodig
hebt! Dit kan handig zijn wanneer je een herhaling (loop) wil gebruiken om een stijl te genereren.
Bijvoorbeeld wanneer je een array hebt met namen van iconen. In onderstaand voorbeeld plaatsen we
een waarde bijgehouden in een variabele in een klassenaam.
Voorbeeld SASS
$innerContainerClass: container;
.left .#{$innerContainerClass} {
width:75%;
display:inline-block;
}
Omgezet naar CSS
.left .container{
width:75%;
display:inline-block;
}
4
LESS
Less is een preprocessors dat werd gecreëerd door Alexis Sellier. Net zoals in SASS compileert LESS de
code naar een gewone CSS syntax. LESS is open source, dit wil zeggen dat iedereen naast gebruiker ook
developer kan zijn voor de preprocessors. Bij het ontstaan van de preprocessors werd eerst zoals in SASS
gebruik gemaakt van Ruby, echter zijn ze in verdere versies hiervan afgestapt en werd de code
herschreven in JavaScript. Merk op dat gevalideerde CSS code ook gevalideerde LESS code is. Zoals je
zag in de vorige hoofdstukken heeft LESS min of meer dezelfde kenmerken als SASS zoals variabelen,
nesting, operatoren, mixins en functies.
Figuur: 21: LESS
in welke webtoepassingen wordt het noodzakelijk om sass of less te integreren?
Bachelorproef Sam Bauters
33
4.1 Client-Side variatie
Om de client-side variatie van LESS te gebruiken moet je de client-side compiler less.js downloaden. Deze
kan je verkrijgen op http://lesscss.org/2.5.3/dist/less.min.js. Wanneer je klaar bent met het downloaden,
kopieer dan het bestand in je werkmap. Hieronder een codevoorbeeld met de less compiler.
HTML opmaak
<html>
<head>
<title>Less voorbeeld</title>
<link type="text/css" rel="stylesheet/less" href="style.less" />
<script src="//cdnjs.cloudflare.com/ajax/libs/less.js/2.5.3/less.min.js"></script>
</head>
<body>
<p class="lesscode">Mijn eerste less code</p>
</body>
</html>
LESS code in style.less
.impElement{
background:lightgrey;
padding:10px;
border-radius:10px;
}
In bovenstaand voorbeeld hebben we less.js gelinkt met behulp van een content delivery network (CDN).
Om deze code uit te voeren heb je een webserver nodig, anders zal less.js niet laten. Wanneer je het
voorbeeld wil uitvoeren zonder webserver, dan moet je LESS lokaal downloaden.
Figuur 22: LESS in PHPSTORM
in welke webtoepassingen wordt het noodzakelijk om sass of less te integreren?
Bachelorproef Sam Bauters
34
4.2 Server-Side Variatie
De client-side variatie is goed om te ontwikkelen en te debuggen. Echter, wanneer je het gaat gebruiken
voor productie, is het aangeraden om gebruik te maken van de server-side variatie. Met andere woorden
wanneer je de LESS code gaat omzetten naar browser vriendelijke CSS. Dit kan worden geïnstalleerd door
gebruik te maken van de node package manager. In het volgende hoofdstuk staat beschreven hoe je
NodeJS kan installeren. Wanneer je klaar bent met het installeren van Node.js, ben je klaar om de lessc
compiler te installeren.
Commando om de lessc compiler te installeren
npm install –g less
Test om te kijken of de lessc geïnstalleerd is
Lessc –v
Dit commando gaat kijken welke versie van lessc werd geïnstalleerd. Nu dat de lessc compiler is
geïnstalleerd kunnen we verder met het compileren van de LESS bestanden.
4.2.1 Compileren van een LESS bestand
Je kan een less bestand compileren door volgend commando aan te roepen.
lessc styles.less
Dit commando zorgt er voor dat dat de uitvoer in de terminal wordt getoond. Als je wenst om de uitvoer
in een .css file op te slaan, moet je commando aanpassen door een 2de paramater toe te voegen
gescheiden door een spatie.
lessc style.less style.css
De lessc compiler kan worden aangeroepen met toevoeging van meerdere opties zoals:
lessc –h
-h zorgt er voor om de help op te roepen.
lessc –include-path=framework/;lib/
--include zorgt voor de toevoeging van het pad waar LESS de imports kan vinden.
lessc –l style.less
--Linten van de LESS code met de less compiler
Daarnaast zijn er nog meerdere opties beschikbaar om te gebruiken tijdens het gebruik maken van de
lessc compiler. Deze kan je vinden in de LESS documentatie:
http://lesscss.org/usage/index.html#commandline-usage-command-line-usage
in welke webtoepassingen wordt het noodzakelijk om sass of less te integreren?
Bachelorproef Sam Bauters
35
4.3 Node.JS
Node.JS is een softwareplatform voor het maken van webapplicaties die realtime werken en makkelijk uit
te breiden zijn. Ryan Dahl begon met het ontwikkelen van Node.JS in 2009. Hij had als doel dat push
notificaties, zoals veel gebruikt bij mobiele apparaten, ook op websites makkelijk geïmplementeerd
konden worden. Node.JS is gebouwd op de V8 Javascript Engine. V8 is geschreven in C++ en is bedoeld
voor applicaties in de browser en voor standalone applicaties. Voorbeelden van applicaties gebouwd op
V8 zijn de browsers Chrome en Chromium. De Javascript Engine compileert Javascript naar machine
code voordat de code wordt uitgevoerd. De V8 Javascript Engine is een open source project van Google.
Node.JS kan gedownload worden via: https://nodejs.org/en/
Figuur 23: Node.JS website
4.3.1 NPM
Node Packaged Modules (npm) is een module manager voor Node.JS. Met npm kunnen extra modules
worden geïnstalleerd. Npm is te besturen via de console en er zijn een aantal commando’s, bijvoorbeeld
een commando om een module te installeren of een commando om alle geïnstalleerde modules te
bekijken. Ook kunnen modules worden geüpdatet met een commando.
http://npmjs.org/ is de website van npm. Op deze website kan je alle modules uitgebracht voor Node.JS
terugvinden. Per module is door de developer aangegeven wat de module biedt. Daarnaast laat de npm
website zien waar de source code te downloaden is, welke release notes er zijn en zijn er commando’s
beschikbaar om de module te installeren of te updaten.
in welke webtoepassingen wordt het noodzakelijk om sass of less te integreren?
Bachelorproef Sam Bauters
36
Om een module te installeren dient npm geïnstalleerd te zijn op de server waar Node.JS applicatie draait.
Npm wordt standaard geleverd bij Node.JS en wordt tijdens de installatie van Node.JS geïnstalleerd. Het
commando om een module te installeren is “npm install [naam van de module]”. De naam van de
module kan via de npm website worden gevonden. Om bijvoorbeeld de module van less te installeren
moet het commando “npm install less” worden uitgevoerd. Na het uitvoeren wordt de module less
geinstalleerd. Om de module less te updaten kan de commando “npm update less” worden gebruikt.
Figuur 24: NPM
4.4 Comprimeren en minimaliseren van CSS
Na het compileren verkrijg je schone en leesbare CSS code. Wanneer je overgaat van development naar
production, moet de code gecomprimeerd en geminimaliseerd worden om zo de laadsnelheid van de
pagina te optimaliseren en bandbreedte te besparen, wat voor mobiele gebruikers heilig is. De
basisstappen voor het comprimeren en minimaliseren van CSS code is het verwijderen van
commentaarlijnen, spaties en andere irrelevante code. De code die je dan te zien krijgt is zeer moeilijk
leesbaar voor de developer, maar dit maakt niet uit omdat je de LESS code kan veranderen om de CSS
aan te passen.
De Less command-line compiler heeft 2 opties om compressie en minimalisering uit te voeren. De eerste
optie is de YUI CSS compressors die je kan vinden via http://yui.github.io/yuicompressor/ De 2de optie is
om gebruik te maken van clean-css die je kan vinden op https://github.com/less/less-plugin-clean-css .
Je kan beide opties niet tegelijkertijd gebruiken. Sinds kort wordt clean-css beschouwd al het snelst van
de twee. Wanneer we bijvoorbeeld een file zouden comprimeren van 4.3kb, met clean-css krijgen we een
compressie tot 3.520kb en bij YUI CSS krijgen we een compressie van 3.542kb. Sinds LESS versie 1.5.0
werd clean-css gekozen als standaardoptie.
in welke webtoepassingen wordt het noodzakelijk om sass of less te integreren?
37
Bachelorproef Sam Bauters
4.5 Alternatief: Grafische User Interface
Net zoals in SASS opteren sommigen om een GUI te gebruiken in plaats van commando’s. Er zijn
verschillende GUIs beschikbaar voor de verschillende platformen om je LESS code aan te passen en te
compileren. Ook de applicaties uit hoofdstuk 3.4, CodeKit, Mixture, Koala Compass en Scout, kunnen
gebruikt worden om LESS te compileren.
 SimpLESS (http://wearekiss.com/simpless)
 Cross-platform editor en compiler met meerdere functies zoals foutnotificatie,
automatisch compileren en minimaliseren van je CSS files.
 Crunch (https://getcrunch.co/)
 Crunch is een cross-platform Adobe Air applicatie. Ondersteund de volledige LESS syntax
Figuur 25: SimpLESS
Figuur 26: Crunch
Wanneer je op het punt staat om een GUI voor LESS te kiezen, vergeet dan zeker niet om na te kijken
welke less.js versie de applicatie gebruikt. Sommige GUI’s zijn gemaakt op oudere versies van less.js en
ondersteunen niet de laatste nieuwe features.
Voor web ontwikkelaars die gebruik maken van Visual Studio wordt Web Essentials aanbevolen. Web
Essentials breidt Visual Studio uit met een heleboel nieuwe features met onder andere LESS. Ook andere
IDEs zoals PHPStorm en Webstorm hebben ingebouwde LESS compilers.
in welke webtoepassingen wordt het noodzakelijk om sass of less te integreren?
Bachelorproef Sam Bauters
38
4.6 Commentaar in LESS
Commentaar maakt je code duidelijk en leesbaar voor anderen. Het is belangrijk dat je de code duidelijk
begrijpt.
In Less kan je commentaar toevoegen op dezelfde manier als dat je dat doet in gewone CSS code, om
meerdere lijnen commentaar achter elkaar te schrijven kan je gebruik maken van /* */ en voor een enkele
lijn commentaar kan je de lijn starten met //.
4.6.1 Geneste commentaar
Alhoewel Less, zoals PHP of javascript niet toelaat om geneste commentaar te schrijven is single
commentaar dat start met // wel toegelaten en dat kan dan weer genest worden met een normale
commentaar syntax. Hieronder een voorbeeld.
/*
//Commentaar
*/
4.6.2 Speciale commentaar
Normaal gezien wordt bij het minimaliseren van de code alle commentaar verwijderd uit het bestand,
maar soms is het verplicht om belangrijke commentaar zoals een licentie of auteursrechten
mededelingen toe te voegen in het geminimaliseerd bestand. Bij het gebruik van de standaard minimizer
clean-css kan je gebruik van /*! !*/ zoals getoond in onderstaand voorbeeld.
/*!
Heel belangrijk bericht
!*/
4.7 Lazy loading
Lazy loading wil zeggen dat het object pas geïnitialiseerd wordt op het moment dat het wordt gebruikt.
Lazy loading is het tegenovergesteld van eager loading. Voor LESS betekent dit dat bijvoorbeeld
variabelen niet moeten worden gedeclareerd voor ze worden gebruikt.
.voorbeeld {
margin-left: @marginleft;
}
@marginleft: 15px;
Dit wordt gecompileerd naar de volgende code:
.voorbeeld {
margin-left: 15px;
}
in welke webtoepassingen wordt het noodzakelijk om sass of less te integreren?
Bachelorproef Sam Bauters
39
4.8 Ingebouwde functies
Less voorziet meerdere ingebouwde functies. Een ingebouwde functie kan worden gebruikt om less
waarden te gaan manipuleren binnenin mixins. Ook kunnen ze worden gebruikt als guard expressions. De
volledige lijst met functies kan je terug vinden op http://lesscss.org/functions/
4.8.1 Javascript
Less functies worden gemapt uit Javascript functies en code. Dit komt omdat zoals eerder aangegeven
LESS geschreven werd in Javascript. Wanneer je Javascript code gaat gebruiken in LESS moet deze
tussen aanhalingstekens worden geplaatst zoals aangetoond in volgend voorbeeld.
@max: ~”´Math.max(10,450) + ‘px’`”;
.container{
width: @max;
}
Deze Less code die nu een Javascript code bevat, zal gecompileerd worden naar volgende CSS code:
.container {
width: 450px;
}
Ook al is het mogelijk om Javascript code te schrijven binnen Less, wordt er toch sterk aanbevolen om dit
niet te gebruiken. Dit komt omdat Less compilers die geschreven worden in andere talen de code niet
kunnen verwerken. Dit wil zeggen dat je code veel moeilijker is om te onderhouden.
Wanneer er geen ingebouwde less functie beschikbaar is voor uw doel, probeer dan om het equivalent
daarvan te schrijven in Less code. Sinds versie 1.6 is er een max() function en zou je volgende
implementatie kunnen gebruiken.
.max(@a,@b) when (@a>=@b){@max:@a;}
.max(@a,@b) when (@b>@a){@max:@b;}
In het algemeen kunnen we stellen dat je beter uitkijkt wanneer je Javascript functies wil gebruiken in de
Less code. Ook waarden zoals document.body.width slaan nergens op in je gecompileerd CSS.
4.8.2 List Functies
Extract() en length() zijn functies om de waarden en de lengte te verkrijgen van een CSV lijst. Samen
kunnen deze functies gebruikt worden om herhalingen zoals in een array uit te voeren over een CSV lijst.
In volgend voorbeeld maak ik gebruik van Font Awesome. Font Awesome is een lettertype dat gebruik
maakt van schaalbare vector iconen die kunnen worden gebruikt in CSS. Die kunnen dan makkelijk
vergroot of verkleind worden, zelfs een andere kleur is mogelijk. Meer informatie over Font Awesome kan
je vinden op http://fontawesome.io/
in welke webtoepassingen wordt het noodzakelijk om sass of less te integreren?
Bachelorproef Sam Bauters
40
Figuur: 27: Font Awesome
Om Font Awesome te gebruiken kan je de volgende lijn code toevoegen in de head van je HTML file. We
gebruiken hiervoor een CDN.
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css">
In je HTML file kan je nu volgende code gebruiken:
<i class="fa fa-check"></i> fa-Check
Met deze informatie over Font Awesome kan je nu een loop maken die iconen toevoegt aan een lijst met
items in je navigatie.
@icons: "\f293","\f294","\f295","\f296","\f297","\f298";
.add-icons-to-list(@i) when (@i > 0) {
.add-icons-to-list((@i - 1));
@icon_: e(extract(@icons, @i));
li:nth-child(@{i}):before {
font-family:'FontAwesome';
content: "@{icon_}\00a0";
}
}
.add-icons-to-list(length(@icons));
De lijn @icon_: e(extract(@icons, @i)); is een string functie en is het equivalent van een escaping ~””.
Merk ook volgend statement op content: "@{icon_}\00a0"; \00a0 zorgt er voor dat er een extra spatie
wordt geplaatst om zo het icoon en de link te scheiden.
4.8.3 Kleur functies
De kleurenfuncties van LESS kunnen worden opgesplitst in kleurenkanalen, blending, kanaal manipulatie
en operations.
Kleuren worden gedefinieerd in kleurenruimtes. Een RGB kleur heeft 3 kanalen: rood, groen en blauw. In
CSS2 wordt gebruik gemaakt van de RGB ruimte. In CSS3 kan er gebruik gemaakt worden van nieuwe
bepalingen zoals HSL en HSV, dit zijn transformaties van RGB waarden. De CSS3 kleurinstellingen zijn
gebruiksvriendelijker, bijvoorbeeld bij HSL wordt er ook gebruik gemaakt van 3 kanalen, die zijn hue,
saturation en lightness. Less heeft ingebouwde functies die toelaten om de kanalen van verschillende
kleurtypes te manipuleren. Sinds CSS3 kan je hexadecimale kleurwaardes gebruiken , RGB kleuren, RGBA
kleuren (Dit zijn kleuren met een alpha kanaal voor de opacity), HSL kleuren, HSLA (De A is staat ook voor
opacity). Natuurlijk is het ook toegelaten om de standaard voor gedefinieerde cross-browser kleuren te
gebruiken.
in welke webtoepassingen wordt het noodzakelijk om sass of less te integreren?
Bachelorproef Sam Bauters
41
De gecompileerde kleurwaarden van de LESS kleurdefinities zijn niet altijd gedefinieerd als een
hexadecimale kleur in CSS code. Zie onderstaand voorbeeld
.selector {
color1: rgb(38,120,30);
color2: rgba(45,112,30,50%);
color3: hsl(25, 100%, 50%);
}
Deze LESS code wordt gecompileerd naar volgende CSS code:
.selector {
color1: #26781E;
color2: rgba(45, 112, 30, 0.5);
color3: #FF6A00;
}
Kleur is een basisdeel als het gaat om het ontwerpen en stijlen van je website. Kleurfuncties kunnen je
helpen om een dynamisch kleurenpalet te ontwerpen. Ze worden dan gebruik om bijvoorbeeld voor te
zorgen dat de randkleur iets donkerder is dan de achtergrondkleur, om te zorgen voor contrast.
Figuur 28: HSL & HSV
4.9 LESS gebruiken in frameworks
Je kan LESS combineren met andere gekende frameworks. In dit gedeelte bekijken we hoe je de volgende
frameworks kan uitbreiden met LESS.
 Cardinal CSS
 Ionic framework
 Semantic grid system
in welke webtoepassingen wordt het noodzakelijk om sass of less te integreren?
Bachelorproef Sam Bauters
42
4.9.1 Cardinal CSS
Figuur: 29: Cardinal
Cardinal CSS is een framework dat vergelijkbaar is met Bootstrap. Het is puur een CSS framework dat
modulair en responsive is. Cardinal CSS gebruikt geen enkele javascript plugin zoals dat bij Bootstrap of
Foundation wel het geval is. Cardinal CSS is geschreven met behulp van LESS. Hoewel het een goed
framework is, is er nog veel werk aan de documentatie, die is namelijk gering.
Een voorbeeld van de HTML opmaak
<div class="grid">
<div class="grid-item 1/4">Block 1</div>
<div class="grid-item 1/4">Block 2</div>
<div class="grid-item 1/4">Block 3</div>
<div class="grid-item 1/4">Block 4</div>
</div>
Cardinal ondersteunt 6 grids systemen:
 xs: 480px;
 sm: 600px;
 md: 768px;
 lg: 960px;
 xl: 1140px;
 xxl: 1380px;
 xs: 480px;
De LESS Cardinal plugin zal de Cardinal code uitvoeren voor je eigen gemaakte stijl. Deze plugin kan
worden geïnstalleerd door volgend commando:
npm install –g less-plugin-cardinal
Na de installatie, kan de plugin gebruikt worden
Npm install cardinal.less –cardinal
in welke webtoepassingen wordt het noodzakelijk om sass of less te integreren?
Bachelorproef Sam Bauters
43
4.9.2 Ionic
Figuur 30: Ionic
Het Ionic framework wordt gebruikt voor het bouwen van een mobiele hybride applicatie, dit zijn web
applicaties die worden uitgevoerd als native applicaties. Omdat deze applicaties worden bestaan uit web
pagina’s kunnen ze worden gemaakt in HTML, javascript en CSS. Ionic applicaties worden gebouwd in
HTML5. De LESS plugin is beschikbaar op https://github.com/bassjobsen/less-plugin-ionic . Dit
importeert het Ionic Framework voor je zelf geschreven Less code zoals ook eerder aangehaald bij
Cardinal. Nadat de plugin is geïnstalleerd kan je gemakkelijk je code compileren met volgend commando
Lessc lessapplication.less lessapplication.css –ionic
De plugin kan worden geïnstalleerd met volgend commando
npm install –g less-plugin-ionic
4.9.3 Semantic Grid System
Figuur 31: Semantic Grid System
Het Semantic Grid System is een moderne en schone oplossing met als doel het bouwen van een
responsieve layout zonder niet semantische klasses in de opmaak. Je stelt simpel de column en gutter
widths in, het aan kolommen en dan heb je keuze tussen pixels of percentages. Het systeem werd
grotendeels gemaakt met LESS maar geeft ook ondersteuning aan SCSS. Hieronder een voorbeeld
@import 'grid.less';
@columns: 10;
@column-width: 50;
@gutter-width: 10;
@total-width: 100%;
.main {
.column(8);
}
.sidebar {
.column(2);
}
in welke webtoepassingen wordt het noodzakelijk om sass of less te integreren?
Bachelorproef Sam Bauters
5
44
Stappenplan SASS of LESS
5.1 Installatie
Zoals eerder aangehaald in dit document zijn SASS en LESS gebouwd op verschillende platformen. SASS
is gebouwd met Ruby terwijl LESS draait op de Javascript library.
SASS
Om SASS te kunnen gebruiken moet Ruby worden geïnstalleerd, op MAC staat dit standaard geïnstalleerd
maar op Windows ben je verplicht om eerst de Ruby compiler te installeren vooraleer je SASS aan de
praat krijgt. Dit kan door het gebruik van de terminal of met behulp van een GUI.
LESS
LESS is gebouwd op Javascript wat wil zeggen dat het heel simpel is om LESS te installeren, je hoeft enkel
in je HTML bestand de link te leggen met de less.js javascript library. Ook voor LESS zijn er verschillende
GUI applicaties beschikbaar om je code naar CSS te compileren.
Conclusie
LESS krijgt hier de voorkeur op SASS omdat je onmiddellijk aan de slag kan met het ontwikkelen van je
applicatie.
5.2 Taal
Elke preprocessor heeft zijn eigen zijn eigen taal en heeft grotendeels gemeenschappelijke onderdelen
zoals variabelen. SASS definieert zijn variabelen met het $ teken terwijl LESS dit doet met het @ teken.
Wanneer je beide preprocessors gaat vergelijken valt er op dat SASS het meest aanleunt bij
programmeren. De preprocessor maakt gebruik van if/else voorwaarden en lussen.
Wanneer je vertrouwd bent met programmeertalen zoals Ruby en Javascript kan je dit makkelijk
integreren en overnemen in je stijldocumenten. LESS kan dit grotendeels ook maar deze zijn niet zo
uitgebreid.
Ook laat SASS toe om meer gevarieerde wiskundige bewerkingen uit te voeren, bevat een betere nesting
en dit kan dan weer bijdragen tot een betere organisatie van je stijldocument gebaseerd op het DRY
principe.
Conclusie
SASS neemt hier duidelijk de bovenhand, je hebt meer features en mogelijkheden tot je beschikking.
in welke webtoepassingen wordt het noodzakelijk om sass of less te integreren?
Bachelorproef Sam Bauters
45
5.3 Documentatie
Documentatie is van zeer groot belang bij elke preprocessor. Zonder deze documentatie zou het zo goed
als onmogelijk zijn om iets werkend te krijgen.
Wanneer we surfen naar de website van SASS (http://sass-lang.com/) en doorklikken naar de
documentatie pagina, krijgen we een ellenlange pagina met zeer veel informatie te zien die doet denken
aan de online encyclopedie Wikpedia. Dit geeft de gebruiker geen motivatie om het document grondig
door te nemen.
Figuur 32: SASS Documentatie
De documentatie die je terugvindt op de website van LESS (http://lesscss.org/features/) is overzichtelijker
en duidelijker te gebruiken, ook gaat de documentatie meteen over tot de essentie: voorbeelden. Dit zet
de gebruiker aan om aan de slag te gaan met LESS.
Figuur 33: LESS Documentatie
in welke webtoepassingen wordt het noodzakelijk om sass of less te integreren?
Bachelorproef Sam Bauters
46
Conclusie
De documentatie van LESS is net iets overzichtelijker en duidelijker dan die SASS, ook al is deze meer
uitgebreid, daarom krijgt LESS hier de voorkeur.
5.4 Extensies
Compass is een open-source CSS Authoring Framework die je kunt gebruiken bovenop SASS. Hierbij heb
je extra mixins met CSS3 support zoals border-radius, box-shadow, box-sizing, en opacity maar ook
features zoals Helpers, Lay-out, Typografie en Grid lay-out. Kortom, Compass is een perfecte match met
SASS. Deze extensie wordt onder andere gebruikt door het sociale netwerk LinkedIn
(https://www.linkedin.com/).
LESS heeft ook meerdere extensies ter beschikking maar die zijn niet gecombineerd in 1 enkele extensie
zoals dat bij Compass wel het geval is. Voor beginnende ontwikkelaars kan dit een struikelblok vormen
omdat dit meer tijd in beslag zal nemen doordat je meerdere extensies moet onderzoeken.
Dit zijn enkele extensies die je kan gebruiken voor LESS:
 CSS3 Mixins
o Preboot (http://markdotto.com/bootstrap/)
o LESS Elements (http://lesselements.com/)
o LESS Mixins (https://github.com/tophermade/LESS-Mixins)
 Grid
o Frameless (https://github.com/jonikorpi/Frameless)
o Semantic.gs (http://semantic.gs/)
o 960.gs (https://github.com/adrianlee44/960gs.less)
 Lay-out
o Even.less (https://github.com/bisrael/even.less)
5.5 Fout afhandeling
Error notificaties zijn zeer belangrijk zodat je snel op de hoogte bent van wat er misloopt. Wanneer je aan
het werken bent aan een groot project met duizenden lijnen code, is het een must om een overzichtelijke
en duidelijke foutmelding te verkrijgen.
SASS
In onderstaand voorbeeld waar op lijn 6 een puntkomma werd vergeten, zie je een foutmelding
gegenereerd door SASS. Wanneer je de error nader bekijkt is deze nogal omslachtig en moeilijk te
begrijpen.
in welke webtoepassingen wordt het noodzakelijk om sass of less te integreren?
47
Bachelorproef Sam Bauters
figuur 34: SASS foutmelding
LESS
Wanneer we dezelfde error oproepen bij LESS, zien we dat deze beter wordt weergegeven en dat deze
ook accurater lijkt zoals je ziet in onderstaande screenshot.
figuur 35: LESS foutmelding
5.6 Overzicht SASS vs LESS
Website
Jaar van publicatie
Oprichter(s)
Licentie
Versie
Laatste datum van publicatie
Sterren op Github
Populaire frameworks
SASS
http://sass-lang.com/
2007
Hampton Catlin, Natalie
Weizenbaum, and Chris
Eppstein
MIT
3.4.21
11 januari 2016
7687
Compass, Bourbon, Gumby
LESS
http://lesscss.org/
2009
Alexis Sellier
MIT
2.5.3
25 september 2015
13415
LESS Elements, LESSHat, 3L
in welke webtoepassingen wordt het noodzakelijk om sass of less te integreren?
Bachelorproef Sam Bauters
48
5.7 Conclusie
Uit deze paper kan je concluderen dat beide preprocessors veel met elkaar gemeen hebben en dat SASS
een lichte voorkeur krijgt op LESS, wat niet wil zeggen dat LESS slecht een slechte keuze is. Wanneer je
bijvoorbeeld een bepaald frontend framework gebruikt dat gebaseerd is op LESS kan je gerust deze
preprocessor gebruiken.
De instapdrempel van SASS lijkt net iets hoger te liggen dan LESS, maar op lange termijn zal je merken
dat je met SASS de juiste keuze hebt gemaakt.
 SASS bevat een betere syntax
 SASS heeft meer features
 Met SASS kan je ook gebruik maken van het framework Compass
Wat je ook verkiest, zolang je 1 van de vele CSS preprocessors gebruikt, ben je al op de goede weg. Je zal
sneller en efficiënter te werk kunnen gaan en het zal je product naar een hoger niveau tillen.
in welke webtoepassingen wordt het noodzakelijk om sass of less te integreren?
Bachelorproef Sam Bauters
49
Referentielijst
 Arkins, D. (2014, oktober 22). Which CSS Preprocessor Should You Choose? Opgehaald van
logentries: https://blog.logentries.com/2014/10/which-css-preprocessor-should-you-choose/
 Bradford, L. (2015, november 10). Sass vs. Less. Opgehaald van onemonth:
http://learn.onemonth.com/sass-vs-less
 Bradley, S. (2012, april 9). Sass And LESS: An Introduction To CSS Preprocessors. Opgehaald van
vanseodesign: http://vanseodesign.com/css/css-preprocessors/
 chriseppstein. (sd). Sass/Less Comparison. Opgehaald van github:
https://gist.github.com/chriseppstein/674726
 Coyier, C. (2012, mei 16). Sass vs. LESS. Opgehaald van css-tricks: https://css-tricks.com/sass-vsless/
 CSS Preprocessors Compared: Sass vs. LESS. (sd). Opgehaald van hongkiat:
http://www.hongkiat.com/blog/sass-vs-less/
 Dean, M. (2015, oktober 8). less-the-worlds-most-misunderstood-css-pre-processor. Opgehaald van
getcrunch: https://getcrunch.co/2015/10/08/less-the-worlds-most-misunderstood-css-preprocessor/
 FNL. (2015). CSS Preprocessors. Webdesigner, 38-45.
 Getting started | Less.js. (sd). Opgehaald van LESS: http://lesscss.org/
 Hixon, J. (2011, september 9). An introduction to less and comparison to lass. Opgehaald van
smashingmagazine: https://www.smashingmagazine.com/2011/09/an-introduction-to-less-andcomparison-to-sass/
 Jackson, B. (2016, maart 23). CSS Preprocessors – Sass vs LESS. Opgehaald van keycdn:
https://www.keycdn.com/blog/sass-vs-less/
 Koala. (sd). Opgehaald van Koala: http://koala-app.com/
 Less & Sass files. (sd). Opgehaald van getuikit: http://getuikit.com/docs/documentation_lesssass.html
 Luke. (2013, februari 8). LESS VS SASS VS STYLUS. Opgehaald van scottlogic:
http://blog.scottlogic.com/2013/03/08/less-vs-sass-vs-stylus.html
 Paris, C. (2014, januari 6). Less vs. Sass – Which CSS Preprocessor is Best For You? Opgehaald van
udemy: https://blog.udemy.com/less-vs-sass/
 Sam. (2014, januari 6). Less vs Sass? It’s time to switch to Sass. Opgehaald van zingdesign:
http://www.zingdesign.com/less-vs-sass-its-time-to-switch-to-sass/
 Sanders, T. (sd). Moet ik SASS of LESS gebruiken? Opgehaald van tomsanders:
http://tomsanders.info/blog/moet-ik-sass-of-less-gebruiken/
in welke webtoepassingen wordt het noodzakelijk om sass of less te integreren?
Bachelorproef Sam Bauters
50
 Sass vs. SCSS: which syntax is better? (sd). Opgehaald van thesassway:
http://thesassway.com/editorial/sass-vs-scss-which-syntax-is-better
 sass-lang. (sd). Opgehaald van CSS with superpowers: http://sass-lang.com/
 Wildermuth, S. (2012, maart 5). A Better CSS: LESS and SASS [Video]. Opgehaald van Pluralsight:
https://app.pluralsight.com/library/courses/better-css/table-of-contents
 Wolkerstorfer, I. (sd). Which is better: Less, Compass or Sass? Opgehaald van quora:
https://www.quora.com/Which-is-better-Less-Compass-or-Sass
in welke webtoepassingen wordt het noodzakelijk om sass of less te integreren?
Bachelorproef Sam Bauters
51
Figuur Referentielijst
 http://www.joomlavision.com/understand-a-power-of-sass-and-why-you-should-use-csspreprocessors/
 http://rootwork.org/blog/2013/05/ninjas-your-code-drupalcon-portland-sass-extendsplaceholders
 https://www.ostraining.com/blog/coding/compiling-tools/
 Figuur 4: HTTP://rootwork.org/blog/2013/05/NINJAS-YOUR-CODE-DRUPALCON-PORTLAND-SASSEXTENDS-PLACEHOLDERS
 Figuur 8: Mixture (bron : https://www.ostraining.com/blog/coding/compiling-tools/)
 Figuur 9: Scout (bron : https://www.ostraining.com/blog/coding/compiling-tools/)
 Figuur 10: Koala (bron : https://www.ostraining.com/blog/coding/compiling-tools/)
 Figuur 11: CodeKit (bron : https://www.ostraining.com/blog/coding/compiling-tools/)
 Figuur 12: Compass (bron : https://www.ostraining.com/blog/coding/compiling-tools/)
 Figuur 13: Prepos (bron : https://www.ostraining.com/blog/coding/compiling-tools/)
 Figuur 18: Yeoman http://blog.bingo929.com/wp-content/uploads/2014/03/yeoman-bannerwide.jpg
 Figuur 19: https://robots.thoughtbot.com/getting-started-with-sass-bourbon-and-neat-withyeoman
 Figuur 24: NPM: https://www.supnig.com/media/pictures/npmnodejs.jpg
in welke webtoepassingen wordt het noodzakelijk om sass of less te integreren?
Download