変数に var は必要ない
では、基本的な構文からみていきましょう。
num = 3245console.log numJSなら var num = 3245; と書くところですが「var」も「 ;(セミコロン)」も必要ありません。
2行目の console.log num は console.log (num) とカッコで囲んでも大丈夫です。
これをコンパイルすると次のように展開してくれます。
(function() { var num; num = 3245; console.log(num);}).call(this);コメント
コメントは「#」です
#1行コメント
###複数行コメント###「###」の複数行コメントはコンパイル後にコメントアウトして表示されるのに対して、「#」の一行コメントはコンパイル後削除される。
配列 & ハッシュ
配列とハッシュです。
array = [ 'hoge1' 'hoge2' 'hoge3']hash = { hoge1 : 100 hoge2 : 200 hoge3 : 300}この辺はぱっと見ると普通のJSですが、CoffeeScriptでは改行とかインデントに意味があって、改行とインデントを入れれば「,(カンマ)」が必要ないのです。
一行で書きたい場合は「,」を使えば通常通り書けます。
階層があるハッシュだとみやすいですね。
hash = { day1 : title : '今日のタイトル' body : '今日は晴れです。' day2 : title : '明日のタイトル' body : '明日は雨かもしれない。'}for文
100回繰り返したいって場合はこうです。
for i in [1..100] console.log iすごく短くなっている気がする!
配列と同じで2行目(forの中)はインデントを入れないとエラーになります。
次に先ほどの配列とハッシュを展開してみます。
#配列for value in array console.log value#ハッシュfor key, value of hash console.log "#{key} : #{value.title}"関数
関数は「-> 式」の形になります。
hoge = -> console.log 'こんにちは'
hoge()引数がある場合は「(引数) -> 式」の形になります。
hoge = (num1, num2) -> num1 + num2
console.log hoge(100, 200)return キーワードは必要なく、最終行に自動的に return が付きます。
クラス
JSにはclassはありませんが、CofeeScriptにはclassキーワードが用意されていて、それっぽいことができます。
class Car constructor: (@name, @meters) ->
move: (meter) -> @meters += 100
show: -> console.log @meters
car1 = new Car("car01", 100)car1.move()car1.show()CoffeeScriptを動かすには
CoffeeScript はそのままではブラウザは実行してくれません。
ブラウザで実行するには、最終的にコンパイル(変換)してJavaScriptにする必要があります。
node.js などでサーバー側でコンパイルするのが一般的なようですが、とりあえず試してみたいのであれば、ライブラリを読み込むだけで実行できます。
上記ページの「Latest Version: 1.2.0」の数字をクリックするとダウンロードできます。
解凍してできたフォルダの「extras」に「coffee-script.js」というファイルがあるので取り出しておきましょう。
あとはhtmlでこんな感じで読み込みます。
<script type="text/coffeescript" src="js/test.coffee"></script><script type="text/javascript" src="js/coffee-script.js"></script>text.cofeeというファイルにCoffeeScriptを書けば実行してくれます。
NetBeansならプラグインがあります
メジャーなエディターやIDEならプラグインなどがあると思います。
NetBeans にもプラグインがあります。
「ツール」→「プラグイン」の「使用可能プラグイン」で「CoffeeScript」と検索してみてください。
プロジェクトツリーからCoffeeScriptファイルを右クリックすると「Compile」できたり「Autocompile」をonにしておけばファイルを更新するたびに自動的にコンパイルしてくれます。
ただ補完などはしてくれないっぽいです。



