《PhoneGap精粹:構建跨平臺的移動App》——1.4節為容器而設計
本節書摘來自非同步社群《PhoneGap精粹:構建跨平臺的移動App》一書中的第1章,第1.4節為容器而設計,作者 【美】John M. Wargo,更多章節內容可以訪問雲棲社群“非同步社群”公眾號檢視
1.4 為容器而設計
PhoneGap精粹:構建跨平臺的移動App
PhoneGap應用程式是一款執行在客戶端的原生應用程式容器中的Web應用程式。正因如此,PhoneGap應用程式中的Web應用程式使用的是HTML5應用程式的結構,而不是傳統的基於服務端Web應用程式的結構。接下來就讓我們看看這個不同的觀點。
1.4.1 傳統的Web伺服器(Web 1.0)方式
對於傳統的Web應用程式,Web伺服器承載著靜態的HTML頁面或者動態頁面,然後將這些頁面返回給客戶端(瀏覽器)。對於動態頁面來說,伺服器端的語言或指令碼語言通常用於(比如從資料庫)獲取動態內容,還用於將這些內容在發回瀏覽器之前格式化為HTML。當瀏覽器發出一個請求時,伺服器會去獲取相應的頁面和內容,然後將這些內容格式化成HTML(或其他類似的,比如XHTML),最後將這些內容發回瀏覽器顯示。
這裡我們假定瀏覽器不需要對內容對任何處理。瀏覽器只是請求頁面,同時為了返回請求的內容伺服器會做許多工作。在瀏覽器上,應用程式可以利用客戶端JavaScript程式碼,讓使用者和頁面上的內容互動,但通常大多數工作會在服務端完成。
1.4.2 Web 2.0方式
隨著Web 2.0的出現,Web伺服器的負載有了一個下降,取而代之的是在瀏覽器中執行
JavaScript程式碼來請求資料和展示資料。Web伺服器向Web應用程式傳送了一個基於HTML的封裝,隨頁面一起傳送過去的JavaScript程式碼會動態組織頁面的內容區域,根據需要顯示或隱藏資料內容。
Web 2.0應用程式之所以會成功主要是因為JavaScript中的XMLHTTPRequest(XHR) API。該API讓web應用程式可以非同步地向伺服器傳送請求,並當從伺服器獲取資料後處理這些資料,而不用打斷使用者的當前操作。許多PhoneGap應用程式都大量使用XHR與遠端伺服器互動。
該方式可以支援更多有趣的Web應用——看起來更像原生桌面應用的應用程式。雖然Web伺服器還是需要用來承載提供給瀏覽器的頁面和內容,但是幾乎不會直接運算元據。Google Maps(http://maps.google.com)或Google Gmail(http://mail.google.com)都是很好的Web 2.0的例子。
1.4.3 HTML5方式
移動裝置需要一個稍微不同的方式。雖然Web 1.0和2.0在智慧機上可以很好地工作,但對Web 1.0的應用來說,在伺服器和裝置間需要傳輸大量的資料。對Web 2.0的應用來說,雖然沒有這方面的問題,但是需要不斷使用網路。Google甚至為了解決這個問題,發明了一項名為Google Gears(http://gears.google.com)的技術,該技術在客戶端提供了一個SQL資料庫和其他一些功能,用來保證即使無法訪問Web伺服器,Web應用程式仍然可以正常工作。但後來,他們停止了這個專案,轉而投入幫助起草HTML5的標準。
通過HTML5,Web應用程式可以使用一些新的功能,這些功能在移動裝置(或受限於網路連線的裝置)上可以更高效地執行。通過HTML5,Web應用程式可以使用客戶端的資料庫去儲存應用程式資料。對移動裝置來說,這使得無論在有網路還是無網路的情況下,操作都會變得更簡單。此外,HTML5還支援使用manifest(宣告)檔案,列出Web應用程式會用到哪些檔案。當載入了Web應用程式的index檔案時,瀏覽器將讀取manifest檔案,並且接收該檔案中列出的所有檔案,並下載到客戶端裝置中。如果移動裝置無法連線到網路,只要manifest檔案中列出的檔案已經儲存在了裝置上,那麼應用程式通過使用本地儲存的資料還是可以繼續工作的。
雖然我們需要為Web應用程式特地編寫程式才能使用這些HTML5的能力,但該Web應用程式可以在瀏覽器容器(或在PhoneGap應用程式容器)中獨立執行。通常,index.html檔案只是應用程式中的HTML檔案,同時該應用程式的不同“螢幕”1實際上只是根據需要移入移出的不同
Web開發人員必須反覆思考利用這些HTML5能力的Web開發方式。HTML5應用程式在移動裝置上應該是可以自給自足2的,而不是向web伺服器請求各種資訊。
執行在PhoneGap應用程式中的web應用程式就是一個HTML5應用程式。
1譯者注:指不同的顯示介面。
2譯者注:指不需要依賴Web伺服器也可以獨立執行。
相關文章
- hybird跨平臺移動app開發APP
- 設計和而不同的跨平臺AppAPP
- App必備!為好設計而動APP
- C#移動跨平臺開發(2)Xamarin移動跨平臺解決方案是如何工作的?C#
- 為什麼移動端跨平臺開發不靠譜?
- Facebook 是如何構建第一個跨平臺的 React Native APPReact NativeAPP
- HTML5、Web引擎與跨平臺移動App開發HTMLWebAPP
- 設計多裝置或者跨平臺的 app 如何進行自動化?APP
- 銀行容器雲平臺建設的關鍵設計 | 資料
- 使用Electron構建跨平臺的桌面應用
- 如何構建高效自主的容器雲交付平臺?
- 移動跨平臺開發深度解析
- 為建設而建設 ,為系統而系統
- 容器雲平臺微服務架構設計的誤區微服務架構
- 移動端跨平臺開發的深度解析
- CrossApp 0.1.5 釋出:跨平臺移動應用開發引擎ROSAPP
- 跨平臺移動應用開發引擎CrossApp更新至0.1.8ROSAPP
- cordova + vue cli構建跨平臺應用Vue
- 為移動而設計,第一部分:資訊架構架構
- 論文第3章:移動繪圖平臺的架構設計繪圖架構
- 移動跨平臺技術方案總結
- Facebook:我們是如何構建第一個跨平臺的 React Native APPReact NativeAPP
- 移動開發的跨平臺技術演進移動開發
- TypeScript, Angular 和移動端的跨平臺開發TypeScriptAngular
- Flutter:手拉手帶你極速構建漂亮的跨平臺(iOS/Android)移動應用 ✿ 初識FlutteriOSAndroid
- jquery Mobile應用第2課《構建跨平臺APP:jQuery Mobile移動應用實戰》連載二(簡單的QWER鍵盤)jQueryAPP
- 跨平臺打造移動原生應用的10大武器
- ORACLE 跨平臺遷移方法Oracle
- Electron構建跨平臺應用Mac/Windows/LinuxMacWindowsLinux
- 多平臺容器映象構建就看這一篇
- Flutter:手拉手帶你極速構建漂亮的跨平臺(iOS/Android)移動應用 ✿ 環境搭建FlutteriOSAndroid
- Flutter:移動端跨平臺技術演進之路Flutter
- Flutter嚐鮮:跨平臺移動應用開發Flutter
- 手自一體化的移動雲測試平臺建設方案
- 可匯出原生移動應用的跨平臺開發引擎CrossApp正式開源!ROSAPP
- [平臺建設] HBase平臺建設實踐
- 移動端跨平臺技術之下的變與不變
- 從 React Native 到 Flutter,移動跨平臺方案的真相React NativeFlutter