ユーザ用ツール

サイト用ツール


prog_cgi:動的コンポーネントと静的コンポーネント

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

次のリビジョン
前のリビジョン
prog_cgi:動的コンポーネントと静的コンポーネント [2019/03/06 11:00] – 作成 hirohitoprog_cgi:動的コンポーネントと静的コンポーネント [2019/03/07 00:09] (現在) – [静的コンポーネント] hirohito
行 1: 行 1:
 ======  動的コンポーネントと静的コンポーネント ====== ======  動的コンポーネントと静的コンポーネント ======
  
-ウェブアプリで表示されるコンテンツは、プログラムを使って生成される動的コンポーネント(部分)と、CSSファイルやアイコン画像のように、内容が変化せずプログラムを介さない静的コンポーネントがあります。+一般に、ウェブページでは1ページに複数の独立したコンポーネントで構成されます。 
 +ウェブアプリも例外はなく、表示されるコンテンツは、プログラムを使って生成され、状態によって内容が変わる動的コンポーネント(部分)と、CSSファイルやアイコン画像のように、内容が変化せずプログラムを介さない静的コンポーネントがあります。
  
-ここで問題になるのは、ポータブルなアプリケーションを設計しようとした場合、URLに含まれるパスをどのようにするかということです。 +ここで問題になるのは、ポータブルなアプリケーションを設計しようとした場合、それらコンポーネントを指示するURLに含まれるパスをどのようにするかということです。 
-例えば動的コンテンツでは、以下のようなURLでアクセスする場合がります。+ 
 + 
 +===== 動的コンポーネント ===== 
 + 
 +動的な内容をもったコンポーネントは、プログラムによって生成されます。そのため Alone では、必ずエントリポイントを介して開始されます。 
 + 
 +例えば動的コンテンツでは、以下のようなURLでアクセスされま。 
 + 
 +<nowiki> 
 +http://example.com/cgi-bin/index.rb?ctrl=controller1&action=action1 
 +</nowiki> 
 + 
 +この例では、cgi-bin/index.rb がエントリポイントとなり、どのコンテンツも必ずこのエントリポイントとなるプログラムを開始地点とし、後に続くURLパラメータ等によってその後実行されるアクションが決定します。 
 + 
 +もう一つ例を示します。 
 +画面にグラフがある場合、テンプレートファイルに書く内容は例えば以下のようになります。 
 + 
 +  <img src="<%=h Alone.make_uri(action:'graph1', month:7) %>"> 
 + 
 +これテンプレートマネージャによって展開され、実際にブラウザには以下のようなタグが送られます。 
 + 
 +  <img src="/cgi-bin/index.rb?ctrl=graph&amp;action=graph1&amp;month=7"> 
 + 
 +以上のように、動的コンポーネントの場合、make_uriメソッドにパラメータを与えてやるだけで、後はAloneが面倒を見てくれます。 
 + 
 + 
 + 
 +===== 静的コンポーネント ===== 
 + 
 +先の通、動的コンテンツでは、以下のようなURLでアクセスされます。
  
 <nowiki> <nowiki>
-http://example.com/cgi-bin/index.rb+http://example.com/cgi-bin/index.rb?ctrl=controller1&action=action1
 </nowiki> </nowiki>
  
-このサーバでは、cgi-bin以下でCGIを動作させる仕様だったため、cgi-binにエントリポイント index.rb を設置して動作させています。ここで生成されるページでアイコンを使いたい場合、以下のようなタグを生成するでしょう。+このでは、cgi-bin以下でCGIを動作させる仕様だったため、cgi-binにエントリポイント index.rb を設置して動作させています。ここで生成されるページでアイコンを使いたい場合、以下のような imgタグをテンプレートファイルに書くでしょう。
  
   <img src="img/icon1.png">   <img src="img/icon1.png">
  
-ところがこのような記述があると、ブラウザは、/cgi-bin/img/icon1.png からアイコンを読み込もうとしてしまい、意図通りにはどうさしません。それでは、絶対パスで指定するのはどうでしょうか。+ところがこのような記述があると、ブラウザは、/cgi-bin/img/icon1.png からアイコンを読み込もうとしてしまい、意図通りには動作しません。それでは、絶対パスで指定するのはどうでしょうか。
  
   <img src="/img/icon1.png">   <img src="/img/icon1.png">
  
-今度は良さそうですね。ブラウザがアイコンを読み込むときに使うURLも意図通りに見えます。+今度は良さそうですね。ブラウザがアイコンを読み込むときに使う実際のURLも以下の通り意図したものなります。
  
 <nowiki> <nowiki>
prog_cgi/動的コンポーネントと静的コンポーネント.txt · 最終更新: 2019/03/07 00:09 by hirohito