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


モバツイの中の人
マインドスコープ(株)社長
人の良いジョンカビラと言われます。
AMN sponsor rolls
モバツイの2つのスマートフォン
アンドロイドアプリ!
アンドロイドアプリ モバツイtouch
全てのスマートフォンブラウザと、Nintendo3DSで! HTML5版Webアプリ「モバツイsmart」
本を書きました!
100万人から教わったウェブサービスの極意 ~「モバツイ」開発1268日の知恵と視点
Google Friend Connect
このカテゴリ[Web系]の最新30件
インターネットの可能性を信じて〜本を書きました。 ネットショップに20万円は高いという感覚は割と普通の感覚だと思う。 ソーシャルメディアの生かし方 インターネットは芸術だ ECサイトはGoolge検索エンジンのプラットフォームに乗ってることを自覚せよ Ubuntu 8.0.4でTwitter apiのSSL通信ができなくなった人向けのメモ インターネットを支える仮想共同体 twitterとfacebookのレイヤーは違う 文脈が共有できていないフロー型コミュニケーションの問題点 身も蓋もなくなるインターネット フェイスブックページっで起きるかなぁ?!って思ってること。 非公式RTじゃないとできないこと。公式RTが目指したもの。 ツイッターのつぶやき価値 ネットコミュニケーションは万人の手段ではない AWS東京リージョンとtwitter apiの関係 Facebookがインターネットになると困る デジタルネイティブではない30代のつぶやき ネチケットとアーキテクチャという法律のあいだに。 相撲の八百長問題に見られる、ITによるフローのストックという構図 Webエンジニアスキルの勘所 ツイッター面白いね WebSig一日学校で考えてたこと ソーシャルメディアについてのメモ User Streamの先にあるtwitter Web Creation Awardsにノミネートされました。 携帯Webのクッキー利用について調べてみたメモ【update】 twitterドラマと今後のツイッター デジハリの杉山学長賞をいただきました。 日経電子版を流行らせる一つの思いつき 商品の良さとリンクは、140文字で伝えなさい
[このカテゴリをもっと見る]
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件
インターネットの可能性を信じて〜本を書きました。 バルスのツイート機能に関する謝罪を書いたら沢山反応があった件 モバツイの広告の取り組みについて、発表資料の共有