愛車:マツダアテンザ
Webを中心とした、ビジネス&テクノロジーに関する思いつき
by F-shin
[ このサイトについて ] [ F-shinについて ] [ トップ ]
iPhoneアプリ
author:えふしん
photo_20.jpg
藤川真一について


初代モバツイ開発者
想創社再創業 / KMD博士課程
著書〜100万人から教わったウェブサービスの極意―「モバツイ」開発1268日の知恵と視点 [Kindle版]
お求めやすい夏休み特価!
このカテゴリ[Web系]の最新30件
本ブログは移転しました インターネットの遊び方を身につけよう ネットでの選挙活動と投票率 Web2.0がうまくいかなかったワケ WebにおけるMVCアーキテクチャの勃興と変遷 何故、PCはブラウザ、スマホはアプリなのか。 言っとくけどスマホは退化でもあるからな。 アイコン5000円とか、Web受注(発注)価格について。 残念なWeb論の骨子 HTMLってホントよく出来てるな。 「やまもといちろう×イケダハヤト対談イベント」のログを読んで ネットサービスの成功者は「とりあえず受託」という言葉使うのやめません? 全収集型RSSリーダーの終焉とソーシャル化するWeb 頑張ると報われるプログラマーの社会とは。 Perlが○○な話 アメリカ製品のすごさと不思議とワイヤフレーム どの人件費を考えても絶対にお得!利用規約ナイトがきっかけの本が出ます。 クラウドやモバイルを、もっと仕事で活用したいけど、どうやって会社を説得したら良いかわからない! スマホアプリらしいUXとは。 インターネットの変化に対して起こるモヤモヤすることを考え、整理する活動 Facebookは見なくてもいい情報が出てくるSNS 「あなたは影響力があるから、そんなことを言っちゃいけません」の問題点 Facebookに時間を取られすぎる対策 Paypalの本人確認がむかつく件 ネット系イベントがとても主催しやすくなった件 モバイルファーストが失敗なハズはないが、今はまだ時期尚早 やりがいはソートできない…非情なデータベース社会 2012年までのふりかえりと2013年へ ブラウザという平面の限界 ブログ記事の流通の難しさ
[このカテゴリをもっと見る]
Powered by
Movable Type

February 23, 2006

スポンサーリンク

Jemplate で JavaScript でもロジックとビューを分離する」に刺激されて、phpでやってみようかと思ったら、あまりにも簡単なことしか思いつかなくて、それってこういうこと?ってのを書いてみます。

HTMLのWindowインターフェースを研究する

でシンプルなウインドウマネージャを作ってみたのですが、naoyaさんが書かれている通り、JavaScriptで動的出力するHTML部分のコーディングが面倒だなぁと思っていたので、Jemplateなるものの変わりにSmartyを使ったらどうよ?ということで以下のような感じになりましたが・・・・

例:まず最もシンプルなHTML側のコードを書いてみる。
document.writeしてるのは、スクリプトタグから読み込まれるjsonオブジェクトの中にあるHTMLに該当します。
------------------------------------
<script src="testSmt.php" type="text/javascript"></script>
と、   
document.write(jsonTmpl.tmpl);
------------------------------------

scriptタグから読み込まれるphpのコード
smartyの出力をfetchして、jsonでエンコードしてJavaScriptの出力に変換してるだけです。
------------------------------------
require 'lib/smarty/Smarty.class.php';
require 'lib/JSON.php';
$json = new Services_JSON();
$tmpl = $smarty->fetch("dlg_edit_feed.tpl");
$arr = array();
$arr['tmpl'] = $tmpl;
$form = $json->encode($arr);

echo 'var jsonTmpl = ' . $form . ';'
------------------------------------

これで例えば、テンプレートファイルであるdig_edit.feed.tplに、こんな感じのHTMLを書いておけば、
------------------------------------
<form >
フィードURL <input type = "text" size="20" >
<input type ="button" name="" value="読み込む"><br />
</form>
------------------------------------

phpのアウトプットは、以下の通り。

var jsonTmpl = {"tmpl":"<form >\r\n\u30d5\u30a3\u30fc\u30c9URL <input type = \"text\" size=\"40\" >\r\n<input type =\"button\" name=\"\" value=\"\u8aad\u307f\u8fbc\u3080\"><br \/>\r\n<\/form>\r\n\r"};

この例で言えば、smartyテンプレートのHTMLがそのままdocument.writeによる画面に出力されます。

実際使う場合は、レイヤーのウインドウの中身とかにJavaScript側で動的出力するために好きに使ってくださいと言うことですね。
もちろんPHPですから、Ajaxで呼ばれたときに動的に出力を変えるのも簡単です。

・・・って、これだけで良いんですかね?(^^;

もしビューのデータを静的ファイルにしたければ、サーバサイドの出力をコピペして、HTMLに貼り付けてあげればそれでOKですね。Smartyは出力をキャッシュしてるからあえて静的ファイルに切り出すほどのことでもないかもしれませんが。

これでデータとビューはAjaxでJson形式で渡すことができるわけで、JavaScript上にはコントローラーとバリデーションだけを書いてあげれば良いってところでしょうか。

-------------------------------
朝起きて追記:
あぁ勘違い。違うか!
Jemplateのポイントは、クライアントサイドでTTの文法が使えるってことにポイントがあるのか。
あと一歩、先を考えなきゃいけないのね。お恥ずかしい。このエントリ、消そうかな。
--------------------------------
まぁでもデータ同期などを考えると、逐次「あちら側」で処理するのがWeb正しいモデルであり、Ajaxの限界なハズなので、ある程度は使えるな。クライアントサイドでバリバリ高速処理する場合はアレだけど。

スポンサーリンク
■同じカテゴリ[Web系]のエントリー
<<前の記事 Ajax記念日(感傷モード)
>>次の記事 ナローキャストとロングテール
■このblogの書き込み最新3件
本ブログは移転しました インターネットの遊び方を身につけよう トトロが陽なら、『風立ちぬ』は陰?〜『風立ちぬ』の感想