Apatna Jaxerとは?
サーバサイドJavaScriptとは、
JavaScriptはクライアントのブラウザ上で実行するもの、
サーバサイドJavaScriptのエンジンは、
先日、
Ajaxサーバ、
本連載では、
Jaxerのここが素敵
まず手始めに、
1.たった1つのファイルでAjaxのアプリケーションやプレゼンテーションレイヤを全て記述できる
JaxerのコードはHTMLに、
<body>
<script runat="server"> ... </script>
<script runat="both"> ... </script>
<script runat="client"> ... </script>
<script runat="server-proxy"> ... </script>
</body>
※html、
パッと見て分かるように、
それぞれの値の意味は以下のようになります。
- server:サーバのみで利用されるコードを記述します。ここに記述した内容は、
ページ出力時にカットされ、 ユーザは見られないようになっています。 - both:サーバ、
クライアントの両方で利用されるコードを記述します。 - client:クライアントのみで利用されるコードを記述します。runat属性を省略した場合は、
runat="client"と同じ処理になります。 - server-proxy:クライアントからサーバ側での処理を呼び出したいとき、
ここに記述します。ページ出力時にはクライアント側からサーバへ関数をコールする内容に置き換えられます。 - client:クライアントのみで利用されるコードを記述します。runat属性を省略した場合は、
runatの値がserverとclientだけなら、
例えば、
2.サーバサイドのJavaScriptでDOMが利用できる
Jaxerでは、
つまり、
例えば、
document.getElementById('hoge').innerHTML = 'foo';
と書くことができます。サーバサイドでjQueryを利用すれば、さらに
$('#hoge').text('foo');
とより簡単に書くことが可能です。
これまでクライアントサイドのJavaScriptで培ってきたテクニックを、
ただし、
3.ブラウザとサーバのシームレスなやりとり
HTML上で、
<script runat="server-proxy">
getHogeCount(){
return Jaxer.DB.execute('select count(*) from hoge');
}
</server>
<input type="button" value="Hogeテーブルの行数"
onclick="alert(getHogeCount());">
scrptタグのrunat属性をserver-proxyにすることで、
このシンプルさがJaxerのウリの一つになります。
4.他の言語で書かれた既存のページへアクセスすることができる
<script runat="server">
Jaxer.Web.get('http://gihyo.jp/')
</script>
これだけで、
クロスドメインの制約を受けることなく、
読み込んできたHTMLの必要な部分を取り出し、
5.Validationコードをブラウザとサーバで共有することができる
サーバサイドJavaScriptが実現してくれることの中で、
皆さんはこれまでにWebアプリケーションを作成してきた中で、
異なる言語で、
Jaxerを利用すると、
6.JavaScriptでのDBアクセスやファイルアクセス、ソケット通信ができる
サーバサイドJavaScriptと聞いて、
Jaxerでは、
例えば、
<script runat="server">
var resultSet = Jaxer.DB.execute("SELECT * FROM myTable");
var newPrice = resultSet.rows[0].price;
</script>
また、
7.オープンソースであり、標準に準拠しており、すでに知られているAPIを使うものである
JaxerはGPLライセンスの元に公開されているオープンソースプロダクトです。
バイナリと同時にソースコードも公開されており、
また、
Jaxerアプリケーションは、
どうでしょうか? 少しはJaxerに興味をもっていただけたでしょうか?
次回以降、