移動開發者必備工具:開源jqTouch初探
目前,隨著iphone、itouch、ipad的流行,越來越多的開發者想開發相關的應用程序。但目前,蘋果只提供了Objective - C語言去編寫iPhone應用程序。但可惜的是,即使蘋果的總裁喬布斯吹噓它的易用性,C語言本身是不容易學習的語言,跟開發Web網站來比更加是復雜。但是,這一切將發生變化,因為jQuery的工具jqTouch出現了。
jqTouch是一個開放源碼的jQuery的Ajax庫,使你可以很容易地建立和優化iPhone的相關應用,它還適用于建立其它有觸摸功能的設備的應用,如google的Android應用。可以在http://www.jqtouch.com/上下載到jqtouch。
你可以在該網站上觀看jqTouch的演示,但你會發現用普通的瀏覽器無法正常瀏覽其中的不少功能,這是因為演示使用jqTouch其實是為iPhone等設備進行過優化和改造的,其中不少觸摸事件和動畫效果在普通的IE瀏覽器中無法實現(甚至在FireFox4中),但你可以在Mac上或者Safari瀏覽器上看到其效果。
開始使用jqTouch
使用jqTouch的目的使構建基于iPhone的應用變的容易,而所有的只需要一點HTML,CSS和一些JavaScript知識。下面我們先從一個基本的網頁開始做個例子,下面的代碼中使用的只是DIV和UL /the LI元素,這些應該是大家熟知的了。
- <div id="about" class="selectable">
- <ul>
- <p><strong>William Shakespearestrong><br />p>
- <p><em>William Shakespeare (baptised 26 April 1564; died 23 April 1616) was an English poet and playwright, widely regarded as the greatest writer in the English language and the world's pre-eminent dramatist. He is often called England's national poet and the "Bard of Avon". <br />em>p>
- ul>
- <br /><a href="#">Closea>
- div>
- <div id="quotes">
- <div class="toolbar">
- <h1>Quotesh1>
- <a href="#">Homea>
- div>
- <ul >
- <li><a href="#quote">Slidea>li>
- <li><a href="#quote">Slide Upa>li>
- <li><a href="#quote">Dissolvea>li>
- <li><a href="#quote">Fadea>li>
- <li><a href="#quote">Flipa>li>
- <li><a href="#quote">Popa>li>
- <li><a href="#quote">Swapa>li>
- <li><a href="#quote">Cubea>li>
- ul>
- div>
- <div id="quote">
- <div class="toolbar">
- <h1>Quoteh1>
- <a href="#">Homea>
- div>
- <div class="info">
- Better a witty fool than a foolish wit.
- div>
- div>
- <div id="forms">
- <div >
- <h1>Contact Ush1>
- <a href="#" >Backa>
- div>
- <form>
- <ul>
- <li><input type="text" name="search" placeholder="Name" id="some_name" />li>
- <li><input type="text" name="phone" placeholder="Phone" id="some_name" />li>
- <li><textarea placeholder="Comments" >textarea>li>
- <li>Do you want us to contact you?<span class="toggle"><input type="checkbox" />span>li>
- <li>What is your favorite playli>
- <select id="lol">
- <optgroup label="Comedies">
- <option value ="Much Ado About Nothing">Much Ado About Nothingoption>
- <option value ="As You Like It">As You Like Itoption>
- optgroup>
- <optgroup label="Tragedies">
- <option value ="Hamlet">Hamletoption>
- <option value ="Othello">Othellooption>
- optgroup>
- select>
- li>
- ul>
- form>
- div>
- <div id="home">
- <div>
- <h1>Shakespeareh1>
- <a id="infoButton" href="#about">Quote Shakespearea>
- div>
- <ul >
- <li><a href="#about">About Shakespearea>li>
- <li><a href="#quotes">Quotesa>li>
- <li><a href="#forms">Contact Usa>li>
- ul>
- <h2>External Linksh2>
- <ul >
- <li><a href="http://www.insideria.com/" target="_blank">InsideRIA.coma>li>
- ul>
- <ul>
- <li><a href="mailto:mdavid@matthewdavid.ws" target="_blank">Email Mea>li>
- <li><a href="tel:920-389-1212" target="_blank">Call Mea>li>
- ul>
- <div>
- <p>Add this page to your home screen to view the custom icon, startup screen, and full screen mode.p>
- div>
- div>
以上的代碼,執行后的效果如下圖:
在上面的代碼中,唯一用到的唯一的HTML5的元素被采用的是“optgroup“元素。接下來,我們把這個HTML應用轉變為iphone應用。
iPhone內置的瀏覽器是目前市場上最先進的瀏覽器之一。它在如 CSS、動畫方面一直有相當優秀的功能,而這些功能后來才被引入到桌面的瀏覽器中。
接下來本文中展示的代碼,需要在Safari Mac或直接在IOS設備(iPhone,iPod的或ipad)中運行。該代碼運行在iOS3和iOS4上。而對于在iOS2上的運行情況,本文則未作相關測試。
首先到http://www.jqtouch.com/下載jqtouch,而jqtouch的源代碼可以在
http://code.google.com/p/jqtouch/下載。同時,在該網站上,也有很多豐富的視頻指導你的學習。
將下載后的jqTouch解壓,其中要特別留意的是javascript文件夾和CSS/images文件夾。jqTouch其實是jQuery 的插件,可以很靈活的配置,你可以更新這些文件,但在本文中,我們使用默認的設置。
現在,我們開始將之前寫好的HTML代碼移植到移動設備上。在頁面的head元素中添加兩個JavaScript庫,如下:
- <script src="jqtouch/jquery.1.3.2.min.js" type="text/javascript" charset="utf-8">script>
- <script src="jqtouch/jqtouch.min.js" type="application/x-javascript" charset="utf-8">script>
同時要引入兩個CSS文件,在每一個項目中都必須引入:
- <style type="text/css" media="screen">@import "jqtouch/jqtouch.min.css";style>
而第二個css文件,如下:
- <style type="text/css" media="screen">@import "themes/jqt/theme.min.css";style>
這個CSS是主題文件,主題文件是很重要的。默認的主題讓應用看起來象一個iPhone應用程序。當然也可以在jqTouch上下載其他主題,讓應用程序看起來像一個Android風格的應用。事實上,如果你愿意,你甚至可以開發自己的CSS主題,并將其提交給jqTouch項目。
保存修改后的頁面,再運行程序,你將看到如下圖的效果:
為了讓我們的應用有動畫效果,有一個JavaScript函數,添加到網頁的HEAD部分:
- <script type="text/javascript" charset="utf-8">
- var jQT = new $.jQTouch({...}{
- });
- // Page animation callback events
- $('#pageevents').
- bind('pageAnimationStart', function(e, info){...}{
- $(this).find('.info').append('Started animating ' + info.direction + '… ');
- }).
- bind('pageAnimationEnd', function(e, info){...}{
- $(this).find('.info').append(' finished animating ' + info.direction + '.<br /><br />');
- });
- script>
以上功能使動畫在網頁上正確地觸發。
分析代碼
如果使用編輯工具,把代碼折疊起來看,會十分方便,如下圖:
要注意的是,在上文中,使用
接下來,我們觀察在home這個div中,有一個div,使用了樣式toolbar,如下:
- <div id="home" class="current">
- <div class="toolbar">
- <h1>Shakespeareh1>
- <a class="button slideup" id="infoButton" href="#about">Quote Shakespearea>
- div>
你將看到的是,只需要這樣一個簡單的樣式,就能在屏幕最上方產生一個iphone風格的工具欄。
接下來,你會注意到剩下的部分,都其實只是使用了HTML中的錨點進行跳轉連接的。例如,要添加一個iPhone風格的右箭頭,只需要添加一個樣式arrow就可以了,如下:
- <li class="arrow"><a href="#about">About Shakespearea>li>
要注意的是,如果你要連接到外部網頁,則需要添加目標指令“_WebApp“,如下所示:
- <li class="forward"><a href="http://www.insideria.com/" target="_WebApp">InsideRIA.coma>li>
- 對于iPhone,你也可以添加一個鏈接到你電話號碼:
- <li><a href="tel:920-389-1212" target="_blank">Call Mea>li>
添加動畫
動畫在iphone中實在太重要了,你可以添加溶解,轉換,頁面翻轉等很眩的效果。
在下面的例子中,都是使用了錨點去指向同一個連接。其中每一個都使用了不同風格的動畫效果。
- <li><a href="#quote">Slidea>li>
- <li><a class="slideup" href="#quote">Slide Upa>li>
- <li><a class="dissolve" href="#quote">Dissolvea>li>
- <li><a class="fade" href="#quote">Fadea>li>
- <li><a class="flip" href="#quote">Flipa>li>
- <li><a class="pop" href="#quote">Popa>li>
- <li><a class="swap" href="#quote">Swapa>li>
- <li><a class="cube" href="#quote">Cubea>li>
當然,你可以添加更多的效果進來,一個好的實踐是,你可以在按鈕中實踐下這些動畫效果,如:
- class="button slideup"
其他類似的解決方案
目前,也有兩個類似的解決方案,一個是Sencha Touch,在
(http://www.sencha.com/products/touch/)中可以下載。另外一個是iUI project,
下載地址是(http://code.google.com/p/iui/),它是第一個支持iPad的框架。
小結
目前,jqTouch還是在不斷發展中,還有些不完善的地方,但這些相信不是問題,由于是開源項目,希望越來越多的愛好者加入到開發中來。
【編輯推薦】






