CoffeeScript
CoffeeScript kaynaktan kaynağa derleme yapan ve JavaScript kodu üreten bir geliştirme aracıdır. Sözdizimi Python ve Ruby dillerine benzer, kod blokları girintiler ile ayrılır, JavaScript'in satır sonlarında noktalı virgül kullanma gibi yazım kurallarını da içermez, bu nedenle okunması kolaydır. Kullandığı bazı sözcükler ve yapılar sayesinde JavaScript ile uzun yazılabilecek ve okunaksız hale gelecek kodları neredeyse 3/1 oranında kısaltabilir ve kolay okunabilme imkânı sunar. Derleme işlemi çalışma zamanında değil geliştirme aşamasında yapıldığından tarayıcılarda performans kaybı söz konusu değildir.
| |
Paradigması | Betik dili |
---|---|
İlk çıkışı | 2009 |
Tasarımcı | Jeremy Ashkenas |
Geliştirici | Jeremy Ashkenas |
Kararlı sürüm |
1.9.3 (14 Mayıs 2015) |
Etkilendikleri | jQuery, MooTools, ProtoType |
Etkiledikleri | MoonScript |
Uygulama dili | JavaScript |
Platformu | çapraz platform |
Lisans | MIT Lisansı |
Olağan dosya uzantıları | .coffee |
Web sitesi | http://coffeescript.org |
CoffeScript yine CoffeeScript ile yazılmış bir JavaScript derleyici sunar, bu derleyici Node.js veya başka bir JavaScript runtime ile çalıştırılabilir bir derleyicidir. Derlenmiş JavaScript dosyaları doğrudan tarayıcıda veya herhangi bir JavaScript runtime ile çalıştırılabilir.
Kod örneği
Aşağıdaki örnekte CoffeeScript kodu ve bunun derlenmiş halini karşılaştırabilirsiniz.
CoffeeScript
switch day when "Mon" then go work when "Tue" then go relax when "Thu" then go iceFishing when "Fri", "Sat" if day is bingoDay go bingo go dancing when "Sun" then go church else go work |
JavaScript
switch (day) { case "Mon": go(work); break; case "Tue": go(relax); break; case "Thu": go(iceFishing); break; case "Fri": case "Sat": if (day === bingoDay) { go(bingo); go(dancing); } break; case "Sun": go(church); break; default: go(work); } |
CoffeeScript
# The first ten global properties. globals = (name for name of window)[0...10] |
JavaScript
var globals, name; globals = ((function() { var _results; _results = []; for (name in window) { _results.push(name); } return _results; })()).slice(0, 10); |