jQuery Mobile & a-blog cms 強化合宿資料 2010-11-18
Posted: Updated:
jQuery Mobileについて
jQuery MobileでiPhone対応のサンプルHTMLを作ってみた :: ハブろぐ
ブログ的には、上記のエントリーで、あらかた書いてしまっていたりするので割愛。jQuery Mobileは1行もJavaScriptを書かずに、モバイルUIを適用できるすばらしいライブラリです。(まだアルファ版ですが)
a-blog cms + jQuery Mobile のiPhoneテーマ ( jqmobile )
ここからダウンロードできます ( acms_jqmobile.zip 8KB )
みなさんの、今回の強化合宿のおみやげにしていただければ幸いです。jQuery Mobile & a-blog cmsのコラボiPhoneテーマです。
jQueryのライセンスを引き継いで、MITライセンスとしますのでこれをベースに好きなものを作ってもらってOKです。ただし、jQuery Mobileそのものがアルファ版なので、商用利用はそもそもダメな気がしますね。lol
以下、断片的にですが、内容フォローを兼ねた情報やコードなどをつらつらと。
iPhoneっぽいモバイルUIを作れるライブラリ
色々ありますが、それぞれの設計思想により実装の主体が異なります。たとえば、Sencha Touchは他の2つに比べて、極端にJavaScriptでの構築を要求します。
iui
jQtouch
- jQTouch — jQuery plugin for mobile web development
- 【ハウツー】jQuery on iPhone - jQTouchを使ったWebアプリ開発 (1) jQTouchとは | エンタープライズ | マイコミジャーナル
Sencha Touch
- Ext Japan - Sencha Touch機能概要 - HTML5モバイルアプリ用フレームワーク
- iPhone等のWebアプリをHTML5で構築する為のフレームワーク・Sencha Touchを触ってみた - かちびと.net
HTMLドリヴンであることないこと
HTML駆動、HTMLによって全ての機能が定義されるというような感じの意味です。HTMLなりJavaScriptなりPHPなり、どこに何を書いたらそれらが駆動するか、という動作トリガーに関する設計思想のようなものだと思います。
HTMLドリヴンであるjQuery Mobileの場合
jQuery MobileはHTML側で、data-role属性を各要素に割り振ることで、ビジュアルを勝手に適用してくれるので、JavaScriptは読み込むだけで書きません。これは、HTMLがJavaScriptに指示していると言えます。
<html>
<!-- HEADなどを省略 -->
<body>
<div id="header" data-role="header"></div>
<div id="main" data-role="content"></div>
<div id="aside" data-role="navibar"></div>
<div id="footer" data-role="footer"></div>
</body>
</html>
HTMLドリヴンでないJS
jQuery Mobileのような動作を、他のHTMLドリヴンでない何かで行うと、しばしば以下のように記述されます。(非常に極端な例ですが)JavaScript側に、何を、どうするかという指定が書かれます。
$.iphoneUI.init({
header : '#header',
main : '#main',
aside : '#aside',
footer : '#footer',
callback : function()
{
// myfunc
}
});
<html>
<!-- HEADなどを省略 -->
<body>
<div id="header"></div>
<div id="main"></div>
<div id="aside"></div>
<div id="footer"></div>
</body>
</html>
HTMLドリヴンな、a-blog cmsのAjaxリクエスト補助( post_include )
a-blog cmsにはAjax的な表現をサイトに加える補助機能が備わっています。以下はそれの記述例です。HTMLしか書かれていませんが、HTML内に書かれたclassに反応して勝手にJavaScriptが動作します。やはりHTMLが、JavaScriptに指示をしています。
<form action="http://example.com" class="js-post_include" target="#replacement">
<input type="hidden" name="bid" value="1" />
<input type="hidden" name="cid" value="3" />
<input type="submit" name="ACMS_POST_2GET" value="トリガー" />
</form>
<div id="replacement">
<!-- ここにajaxで取得してきた内容が入る -->
</div>
JavaScriptな、普通のAjax的なリクエスト
さっきと同じような関係ですね。a-blog cmsのpost_include機能とは違い、この要素をクリックしたら、この動作をする、というのがJavaScript側で書かれています。
$('#trigger').click(function()
{
$.ajax({
type : 'post',
url : 'http://example.com',
data : {bid: 1, cid: 3},
success : function(html)
{
$('#replacement').replaceWith(html);
}
});
});
<a id="trigger" href="#">トリガー</a>
<div id="replacement">
<!-- ここにajaxで取得してきた内容が入る -->
</div>
実装をHTMLだけで完結させられるスタイル
a-blog cmsはJSだけでなく、フォームのバリデーターや、モジュールの記述もHTMLの形式に乗っ取って、書き込まれているので、ある意味HTMLドリヴンなCMSです。
そんなわけで、HTMLドリヴンなjQuery Mobileとa-blog cmsを組み合わせれば、モバイルサイトの設計・製作がHTMLの中で完結するし、相性いいんじゃない? っていう話をしていました。カスタムフィールド基礎1の裏番組は、そんなことをしていました。;-D