iPhoneWebApp開發雜感
iPhone的SDK還需要兩個月才出來……現在要給iPhone開發app的話,唯一的官方推薦方式就是走web app的道路……
水果牌的魅力無窮……即便有browser的侷限,還是有不少精彩的iphone web app浮現……
Facebook的iPhone版本,簡直就做得跟原生程式無異……當之無愧的Best iPhone Web App……
這或許也是iPhone上的Mobile Safari夠強……它真的很強悍……現代瀏覽器該支援的它都有……若要挑剔的話,我可以說它js的執行速度太慢……但這是處理器的問題,非戰之罪……
只要有足夠想象足夠技術,iPhone能夠提供一個相當美好的舞臺……而Google的手機平臺Adroid使用的瀏覽器與iPhone亦是同核心……明年底,GPhone出來後,iPhone Web App應該都能夠搖身一變成為GPhone Web App才對……
手機原生程式固然可以享受到各種Web App無法做到的東西……比方說3D,本地儲存等等……但這是有代價的……Windows Mobile / Sybiam / iPhone / Adroid,難道我們需要維護四個程式版本?而Web App的話,相信未來幾年內就能夠將他們全部一網打盡……
瀏覽器內的世界已經可以很精彩了……偶個人對Web App的發展還是非常有信心的……
扯遠了……
開發iPhone Web App時,偶大部分的時間都是十分開心……因為我只需要照顧好MobileSafari一個瀏覽器就夠了……我可以毫不猶豫的使用-webkit-border-image這樣酷的CSS效果……
但MobileSafari也是有bug的……最納悶的一個CSS bug就是它無法在頁面上固定位置顯示一個東西……比方說選單……而偏偏在頁面上顯示固定元素做導航在iPhone上面對使用者互動是十分關鍵的……CSS搞不定,javascript呢?很悲慘的是使用者拖動頁面這個事件根本拿不到……應該有別的js奇技可以搞定這個……但是,這個是bug……相信這個bug會水果牌會很快搞定的……我個人是覺得投入精力去繞過這麼個bug很划不來……至少,facebook也沒有……
facebook是家偉大的公司……它的iPhone版很酷……而其開發者Joe Hewitt(不認識?Firebug作者是也!)把facebook iPhone版頁面切換引擎iui給開源了……iui很好,很強大~ ?
因為開發的web app包括IM,使用AJAX是必然的了……實際上,偶使用了超大量的Ajax……
在選擇Ajax庫的時候,著實費了一番功夫……最終是選擇了jQuery……主要原因是在普通web上用慣了……轉其他庫的話,重新上手需要時間……
一開始猶豫主要是擔心jQuery太龐大……怕iPhone抗不住……可實際測試的結果……MobilSafari執行jQuery遊刃有餘……
另一方面的衡量是對於OO的支援……jQuery代表的是Event Base的開發哲學……OO並不是jQuery的選擇……這點在jQuery作者John Resig的一個演講中有提到……
偶的Web App相對比較複雜……不遵循OO的話,很擔心程式碼後期的維護以及擴充套件……不過後來也就釋然了……不是非OO不可……程式碼好壞最重要的還是看程式設計師本身的功力……如果說OO是神刀的話……有的人 “即便有神刀在手,亦無法成為刀中之神”……而且,也不是說用了jQuery就不能OO……我完全可以從別的庫如Prototype / Mootools等挖出他們對OO支援的部分來用……至於$,還是覺得jQuery的爽~
如果不是jQuery用慣了的話,我很可能會選擇mootools……因為它夠輕量……
號稱對iPhone有特別支援的js庫是Dojo……而Dojo亦對Comet有支援……Cometd便是Dojo基金會那夥人搞出來的……偶做的Web App有包含Web IM,本來看上去Dojo會是合適的選擇……但最終還是放棄了……它太龐大了……如果我用上Dojo的話,可能以後所有的東西都得基於Dojo……就算伺服器端不用它的Cometd,我還是需要去使用使用它的bayeux協議……bayeux協議看了就很暈……這條賊船太大……上去了就下不來……所以,Dojo反倒是偶最先排除的js庫……
不算UI設計……整個Web App開發了大概是2個人月……但,優化、修改又用去2.5個人月……
iPhone跑JS是很慢的……雖然開發的時候已經有小心注意效率……但第一版出來的結果不理想……主要原因是大家第一次做這麼複雜的Web App,欠缺經驗……所以,狠下一番功夫去做優化,若干模組幾乎就是重寫了……
jQuery的$對CSS selector是很強悍……但是功能強大並不代表它快……一開始做的時候甚至有時select了一堆Element出來,然後使用each……慢就一個字……後來全部另外想方法重寫了……效率前後相差可達數十倍……
在UI上,則是開心了使用了iui……iui跟jQuery共存得很好……
整體上來說,開發iPhone Web App最大的問題在於使用者操作上……實際上,這也是Apple提供的開發指南中首先強調的一點……Understand User-iPhone interaction……
它的可顯示面積最多隻有320×396……然後,還有橫屏、豎屏……MobileSafari位址列顯示、隱藏……輸入鍵盤開啟、關閉……設計時必須考慮到這種種情況……如果說要在使用者輸入時做動態提示……那麼需要記得使用者輸入的時候鍵盤是開啟的,千萬不要把提示放在被鍵盤蓋住的地方……
純手指觸控式螢幕操作……這意味著螢幕上的所有可點選元素(按鈕等)都必須夠大,最好還要相隔夠遠……一行最好只有一個……不然,使用者很容易點錯……
當然,我們也可以完全選擇按照iPhone它自己的UI風格去做……頂部一個標題,標題旁最多兩個按鈕……然後正式內容再採用那個List風格…… 但問題是,iPhone本身有一個Home按鈕可以用……Web App沒有,Home一按,就直接退出Safari了……另一個關鍵問題是MobileSafari的頁面滾動預設是整個頁面的滾動……你無法讓使用者只滾動頁面中的一個Div/iframe,而保持其他部分不動……(Well,實際上,是可以只滾動一個Div,只是需要用兩個手指!)……
這就意味如果Web App夠複雜(比方說偶開發的這個),就不能照搬Apple的風格了……
總的來說,開發iPhone Web App是件很有挑戰性,也可以是很愜意的事情……Web + 手機是當下以及下來一兩年內最熱門的開發話題……時勢如此,英雄又是在哪裡呢?
本文轉自 Wuvist 51CTO部落格,原文連結:http://blog.51cto.com/wuvist/847736
相關文章
- 用價值鏈分析軟體開發及雜感
- 開發 備忘錄 - 雜
- 服務端開發小感服務端
- 黑客馬拉松之外的雜感黑客
- K氏讀書雜感——Java (轉)Java
- 一些雜感雜想(一)談談加班、團隊
- android開發技巧雜談Android
- APP後端開發雜談APP後端
- nodejs開發指南讀後感NodeJS
- 雜湊競猜遊戲開發示例丨Hash雜湊遊戲系統開發丨雜湊競猜遊戲詳情遊戲開發
- 雜湊遊戲原始碼開發搭建丨hash雜湊遊戲競猜原始碼搭建丨雜湊遊戲系統開發遊戲原始碼
- 雜湊競猜遊戲系統開發原理丨雜湊遊戲系統開發技術方案丨雜湊競猜遊戲開發原始碼搭建遊戲開發原始碼
- HASH雜湊遊戲原始碼丨HASH雜湊遊戲系統開發丨HASH雜湊遊戲開發成品原始碼部署原始碼遊戲開發
- 雜湊遊戲系統丨雜湊遊戲系統開發(演示版)丨雜湊遊戲開發原始碼及案例遊戲開發原始碼
- 雜湊競猜開發原理丨雜湊競猜遊戲原始碼丨雜湊競猜系統開發設計程式碼遊戲原始碼
- 區塊鏈專案開發—感謝中本聰!也感謝祖克伯!區塊鏈
- 移動端Modal元件開發雜談元件
- AI studio開發困難雜記AI
- 《Unity移動遊戲開發》讀後感Unity遊戲開發
- 《Java實用系統開發指南》初感Java
- 軟體開發到底是業務複雜還是UI複雜UI
- 雜湊競猜遊戲系統開發技術丨雜湊競猜遊戲開發原始碼部署遊戲開發原始碼
- 雜湊競猜遊戲開發正式版丨雜湊競猜遊戲系統開發(開發詳細)及原始碼案例遊戲開發原始碼
- hash雜湊競猜遊戲開發模式丨雜湊遊戲競猜玩法系統開發技術功能遊戲開發模式
- 不懂Hybird開發,感覺錯過一個億~
- java開發真的需要那麼複雜嗎?Java
- 開發效率與系統穩定性雜談
- 雜湊競猜遊戲系統開發DAPP丨雜湊競猜遊戲開發技術程式碼示例APP遊戲開發
- 學習雜感--寫給大學的同學們 (轉)
- 雜湊遊戲競猜開發穩定版,雜湊遊戲競猜系統開發技術詳情及案例,雜湊遊戲競猜原始碼部署遊戲原始碼
- 《阿里巴巴 Java開發手冊》讀後感阿里Java
- MASS雜湊模式系統開發流程詳情模式
- 如何判斷開發語言的複雜度?複雜度
- 幸運雜湊單雙競猜遊戲開發技術丨雜湊遊戲系統程式設計開發(部署搭建)遊戲開發程式設計
- 雜湊競猜遊戲系統開發(方案及邏輯)丨雜湊競猜遊戲開發(原始碼及專案)遊戲開發原始碼
- 競猜雜湊遊戲系統開發程式碼詳情丨競猜hash雜湊遊戲開發技術詳情遊戲開發
- 雜湊競猜遊戲系統開發(詳情及案例)丨雜湊競猜遊戲開發原始碼正式版遊戲開發原始碼
- iphone app開發實戰很重要:《iPhone App開發實戰手冊》讀後感iPhoneAPP