Aptana Jaxerのアーキテクチャ:“JavaScriptだけ”を可能にする仕組み

白石俊平
2008/02/04 16:15

今回は、Jaxerのパワーを如実に表す例を紹介した後、さらに高度なJaxerプログラミングを行うための布石として、Jaxerのアーキテクチャについて簡単にお話ししたい。

JavaScriptコードはどこで実行される?サーバ?ブラウザ?

 先ほどの例のように、サーバのロジックとクライアントのロジックがシームレスに統合される、というのがJaxerの素晴らしい特徴だ。

 ここで、「そのJavaScriptコードはどこから呼び出すことができ、どこで実行されるのか?」をしっかり考えてみよう。前回は、サーバサイドで実行されクライアントからは呼び出せない、というJavaScriptコードの例を取り上げた。今回は、サーバサイドで実行されるがクライアントから呼び出すことができる。また、通常通りクライアントで実行されるJavaScriptコードも存在する。

 こうした、JavaScriptコードが定義/実行される位置を指定するために利用するのが、<script>タグに付与するrunat属性だ。

 runat属性は以下のような値を取ることができる。

  • server:サーバ上で実行され、クライアントから呼び出すことはできない。クライアント側には、一切コードは見えない。
  • server-proxy:サーバ上で実行され、クライアントから呼び出すことも可能。クライアント側には、サーバ側のコードを実行するためのプロキシメソッドが公開される。
  • client(もしくはrunatを省略):通常通り、クライアント(ブラウザ)上で実行される。
  • both:サーバ、クライアントの両方で同じコードを共有する。入力値のバリデーションコードや、サーバ/クライアントどちらでも使用可能なフレームワークなどに使用する。
  • both-proxy:「both」と「server-proxy」をあわせたような効果。コードはクライアントに公開され、クライアント上で実行される。サーバ上の関数を呼び出す場合には、「Jaxer.Server.関数名()」で呼び出す。

 またこれらのほかにも、「both-nocache」と「server-nocache」という値が利用できる。これらは、「サーバ上のコードをキャッシュせず、毎回読み込み直す」というオプションだ。

 Jaxerプログラミングを行うにあたっては、目的に応じてこれらrunat属性を使い分けることが重要となる。

記事の感想やご意見をコメントでお寄せください(CNET_IDログインが必要です)
ログイン パスワードを忘れた方  |  新規登録
米フォレスター・リサーチ社 シニアアナリスト Jeremiah K.Owyang氏を迎え、同氏が提唱するソーシャルテクノロジーを効果的に活用方法するための方法『POST』を日本で初めて紹介する注目のリアルイベント
  • 今日のトップ記事
  • 昨日
  • 2日前
  • 5日前
  • 6日前
  • 7日前
  • 新着記事
  • 人気記事
  • 特集
  • ブログ