RingoJS 触ってみた
RingoJSというプロジェクトが個人的に話題になっています。
JavaScriptでWebアプリケーションのサーバー側のプログラムを書くことができるみたいです。
特徴
RingoJSのトップページに書いてたことを泣きながら読んでいますが、上手く読めていません。英語爆発しろ。
Instant reloading
ソースコードを変更したら、ブラウザをリロードするだけで反映されるみたいです。サーバーの再起動をしなくてもよいってことなのかな。
Full web support
Webアプリケーションを構築する上で必要になるほとんどのものが付属しています。フルスタックってやつですね。
Easy debugging
参考になるエラーメッセージとグラフィカルなデバッガが、間違いの修正を容易にしてくれます。ふむふむ。期待。
It's fast
Ringoは世界最速のJavaScriptランタイムってわけじゃないけど、平均的なWebアプリケーションを引き裂くきます。(よくわかりません><)
インストール
Getting Startedのページからzipをダウンロードして解凍すればOKです。
gitやantの用意がある人はgithubから持ってきてantでビルドしてもいいみたいです。
git clone git://github.com/ringo/ringojs.git cd ringojs ant jar
Ringoシェル
RingoJSには対話式のシェルが付いています。RingoJSをインストールしたディレクトリで以下のコマンドを実行すると、シェルが起動します。
./bin/ringo
シェルが起動したので何か書いてみましょう
alert('Hello World!');
ReferenceError: "alert" is not defined. (<stdin>#1) at <stdin>:1
エラーになってしまいました。JavaScriptとはいえWebブラウザで動いているわけではないのでalertは使えないんですね。「window」とか「console」もundefinedでした。
色々試した結果、出力には「print」関数が使えることがわかりました。
['Hello', 'World', '!'].forEach(function(elem){ print(elem); });
Hello World !
[1,2,3,4,5,6,7,8,9,10].map(function(n) { return n * 2; });
2,4,6,8,10,12,14,16,18,20
Array.map()やArray.forEach()も使えるみたい。素敵だ。
Webアプリケーションを起動してみる
シェルで遊んでいたら30分くらい経過してしまいました。今日の目玉であるWebアプリケーションを起動してみましょう。
Ringoをインストールしたフォルダの「apps」フォルダにデモアプリが入っています。
以下のコマンドを実行するとWebアプリケーションが起動します。
$ ./bin/ringo apps/demo/main.js
0 [main] INFO ringo.webapp.daemon - init 1034 [main] INFO ringo.webapp.daemon - start 1035 [main] INFO org.eclipse.jetty.util.log - jetty-7.1.6.v20100715 1151 [main] INFO org.eclipse.jetty.util.log - Started SelectChannelConnector@0.0.0.0:8080
http://localhost:8080/を開くと何かそれっぽいものが表示されました。
ちょっと気になったのでmain.jsの中を見てみました。
// main script to start application if (require.main == module) { require('ringo/webapp').main(module.directory); }
ほんげー。
なんだかよくわかりません。