Kawa.netブログ(川崎有亮)

アクセスカウンタ

help リーダーに追加 RSS [JavaScript] Sarugau JSで、サーバサイドJavaScript

<<   作成日時 : 2006/05/16 09:37   >>

トラックバック 0 / コメント 0

JavaScript を書いていると、フォーム変数のバリデータルーチン(必須項目チェックetc.)とか、
HTMLテンプレートの展開ルーチン(テンプレート展開ライブラリの仕様・使用方法)など、
できれば1回で書いて済ませたいような部分を、クライアントサイドの JavaScript と
サーバサイドの他言語(僕の場合はPerl)の両方で記述しなければならない場合があり、
それらを手で書いているとバグも出てくるし、面倒があります。
 
そこでサーバサイド JavaScript に興味があるのですが、まだ決定打は出ていない印象です。
JavaScript で書いたライブラリをクライアントサイドでもサーバサイドでも使えるようにしたい。
 
今日知ったのが Sarugau JS。サーバサイド JavaScript に対応したプレゼンテーション層用の
フレームワークです。Pure Java の HTTP サーバ Jetty を利用しています。
http://www.sarugau.org/js/index.html

HTML テンプレートをサーバサイド JavaScript で操作できる。
HTML テンプレートは DOM 木に展開されているので、getElementById() メソッドとか、
innetHTML プロパティなどの操作も可能。

importScript("/prototype.js", context);
function onLoad() {
    $('hoge').innerHTML='<strong>ほげほげ</strong>';
}

毎回 HTML コード⇒ DOM 木に展開しているのかな?
それだと重そうだけど、展開結果をキャッシュしてるかな?
  (追記:キャッシュしているそうです。これなら軽い)
ウェブブラウザに届くのは、toString() した後の HTML コードです。

この importScript() 関数(←これは独自拡張関数でしょうか?)で
JavaScript ライブラリ(サーバ内に置いたファイル)のインポートができます。
JavaScript には、言語としてライブラリ呼び出し機能がない点を克服。
prototype.js などのライブラリが使えるのは強い。

また、何より Java との親和性が高いのがポイントですね。
サーバサイド JavaScript から、Java のクラスを呼び出して使えます。

function getRss(url) {
    var imp = JavaImporter(java.net.*,java.util.*,java.io.*,Packages.org.apache.xerces.jaxp.*)
    var rss = new Object;
    var doc;
    with(imp) {
        var urlobj = new java.net.URL(url);
        doc = Packages.org.apache.xerces.jaxp.DocumentBuilderFactoryImpl.newInstance()
.newDocumentBuilder().parse(urlobj.openConnection().getInputStream());
    }
    var items = doc.getElementsByTagName('item');
//(以下略)

サーバ側でのみ利用するような複雑な処理は、Java で記述できるわけですね。
JavaScript ではバイナリデータの処理ができないけど、Java が使えれば確実。
また、Java ならデータベース関係とかでも、ライブラリが揃っていそう。
 
僕は普段は、Perl+JavaScript の組み合わせを使っているので、新鮮で面白い。
 

設定テーマ

関連テーマ 一覧

月別リンク

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文

EDGE Now!