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

白石俊平(あゆた)
2008-02-04 16:15:00
  • このエントリーをはてなブックマークに追加

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属性を使い分けることが重要となる。

このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]