CoffeeScriptはJavaScriptをRuby・Pythonに似たシンタックスで書けるようにする言語です。
- 開発者: Jeremy Ashkenas
- 公式ページ: http://coffeescript.org/
- レポジトリ: https://github.com/jashkenas/coffee-script
文法・JavaScriptへの変換は公式ページから試せます。
インストールは以下の通り(Linux Mintの場合)。 coffeeコマンドが想定するnodeのコマンド名がaptで入るものと違っていたのでシンボリックリンクで作成しています。
sudo aptitude install -y nodejs npm
sudo ln -s /usr/bin/nodejs /usr/bin/node
sudo npm install -g coffee-script
# サンプルコードをダウンロード・コンパイルして表示
wget https://gist.github.com/doloopwhile/5426335/raw/814c6f364c8482843d68b220be14f14846fc0d14/fibbuzz.coffee
coffee -c -p fibbbuz.coffee
TypeScriptやJSXがJavaScriptに型指定などの新機能を追加するのと対照的に、 CoffeeScriptに新しい機能を追加したりはしません。
CoffeeScriptのコードはJavaScriptの悪いパーツ・落とし穴を回避し 短く簡潔に書くことができるようにします。
たとえば、JavaScriptの無名関数でfunction
という長いキーワードが必要ですが、
CoffeeScriptは=>
で短く書けます。returnも、行末のセミコロンも不要です。
squares = [1, 2, 3].map (x) =>
x * x
また、生成するJavaScriptもシンプルで、メンテやデバッグも容易です。
var squares,
_this = this;
squares = [1, 2, 3].map(function(x) {
return x * x;
});
#!/usr/bin/env coffee
fizzbuzz = (x) =>
if x % 15 == 0
"fizzbuzz"
else if x % 3 == 0
"fizz"
else if x % 5 == 0
"buzz"
else
x
fibonacci_numbers = (max) =>
[a, b] = [1, 2]
ret = []
while a <= max
ret.push a
[a, b] = [b, a + b]
ret
for x in fibonacci_numbers(100)
console.log(fizzbuzz(x))