9. Waarom?
• Snellere productie
• DRY (Don’t Repeat Yourself)
• Minder ruimte voor het maken van fouten
10. Waarom?
• Snellere productie
• DRY (Don’t Repeat Yourself)
• Minder ruimte voor het maken van fouten
• Betere performance (minder HTTP-requests) "out of the box"
11. Waarom?
• Snellere productie
• DRY (Don’t Repeat Yourself)
• Minder ruimte voor het maken van fouten
• Betere performance (minder HTTP-requests) "out of the box"
• Makkelijker overdraagbaar en onderhoudbaar
17. Haml
• Volwassen; versie 1.0 stamt uit 2006
• Draait op Ruby (plugin voor Rails)
18. Haml
• Volwassen; versie 1.0 stamt uit 2006
• Draait op Ruby (plugin voor Rails)
• Geport naar o.a. PHP, Python, .NET, Java en Perl
19. Haml
• Volwassen; versie 1.0 stamt uit 2006
• Draait op Ruby (plugin voor Rails)
• Geport naar o.a. PHP, Python, .NET, Java en Perl
• Indentation based
20. Haml
• Volwassen; versie 1.0 stamt uit 2006
• Draait op Ruby (plugin voor Rails)
• Geport naar o.a. PHP, Python, .NET, Java en Perl
• Indentation based
• Output naar keuze (minified, quote-stijl, etc.)
23. Sass
• Maakt onderdeel uit van Haml
• Wordt in versie 3.1 losgekoppeld van Haml
24. Sass
• Maakt onderdeel uit van Haml
• Wordt in versie 3.1 losgekoppeld van Haml
• Kan in ieder project gebruikt worden
25. Sass
• Maakt onderdeel uit van Haml
• Wordt in versie 3.1 losgekoppeld van Haml
• Kan in ieder project gebruikt worden
• Indentation based (.sass) én CSS-based (.scss)
26. Sass
• Maakt onderdeel uit van Haml
• Wordt in versie 3.1 losgekoppeld van Haml
• Kan in ieder project gebruikt worden
• Indentation based (.sass) én CSS-based (.scss)
• Output naar keuze (minified, etc.)
44. CoffeeScript
• Geen JS library
• Werkt probleemloos samen met JS library’s
45. CoffeeScript
• Geen JS library
• Werkt probleemloos samen met JS library’s
• Gecompileerde code is JS Lint-vriendelijk
46. CoffeeScript
• Geen JS library
• Werkt probleemloos samen met JS library’s
• Gecompileerde code is JS Lint-vriendelijk
• Partials
47. (function() {
some_var = 10 var foo, some_var;
some_var = 10;
$('a').each -> $('a').each(function() {
console.log('foo') return console.log('foo');
});
foo = (bar) -> foo = function(bar) {
return false unless bar if (!bar) {
"Bar has #{bar} as value." return false;
}
return "Bar has " + bar + " as value.";
};
this.available_globally = -> this.available_globally = function() {
alert(some_var) return alert(some_var);
};
}).call(this);
48. (function() {
var number, opposite;
# Assignment
number = 42 number = 42;
opposite = true opposite = true;
# Conditions
number = -42 if opposite if (opposite) {
number = -42;
}
# Existence
alert "I knew it!" if elvis? if (typeof elvis != "undefined" && elvis !== null) {
alert("I knew it!");
}
}).call(this);
51. Happy back-enders
• Meta languages zijn duidelijker voor back-enders (en dus sneller te
implementeren), mits ze de talen kennen.
52. Happy back-enders
• Meta languages zijn duidelijker voor back-enders (en dus sneller te
implementeren), mits ze de talen kennen.
• Back-enders durven beter aanpassingen te maken.
53. Happy back-enders
• Meta languages zijn duidelijker voor back-enders (en dus sneller te
implementeren), mits ze de talen kennen.
• Back-enders durven beter aanpassingen te maken.
• De kans dat een back-ender je code sloopt is kleiner. Maak je iets
kapot, dan krijg je een error (mét stack trace).
54. Happy back-enders
• Meta languages zijn duidelijker voor back-enders (en dus sneller te
implementeren), mits ze de talen kennen.
• Back-enders durven beter aanpassingen te maken.
• De kans dat een back-ender je code sloopt is kleiner. Maak je iets
kapot, dan krijg je een error (mét stack trace).
• Meta languages moeten wél in je ontwikkel- en buildproces passen.