6

我正在開發一個使用ASP.Net MVC生成HTML 5頁面的移動應用程序。 HTML 5頁面將使用jQueryMobile的loadPage來調用ASP.Net MVC來將頁面加載到DOM中。然後,它將使用jQueryMobiles的changePage,根據用戶與應用程序的交互,使頁面在DOM中處於活動狀態。調用MVC應用程序將調用不同的Web服務來檢索源數據以構建HTML。asp.net mvc,jquery mobile,phonegap架構最佳實踐

我們計劃在應用程序中使用PhoneGap,以便我們可以將完成的應用程序提交給Apple和Android商店。我的應用程序不需要與設備的本地功能(聯繫人,地理位置等)進行交互。由於我們不需要與實際設備的操作系統進行交互(除了對MVC應用程序進行jQuery ajax調用),PhoneGap真的需要嗎?我上面描述的方法是否使移動設備上的Web應用程序可行?

由於我的應用程序是asp.net mvc,並且將託管在我的服務器上,所以發送到Android和Apple商店的內容是什麼?這是PhoneGap進場的地方嗎? PhoneGap是否創建了某種提交給Android和Apple商店的可執行文件?然後這個可執行文件被下載到客戶端設備我假設可執行文件然後會通過URL調用MVC網站來檢索應用程序HTML?

我看這看起來正確嗎?謝謝你的幫助。

+0

不確定爲什麼我的問題被拒絕。我一直在做很多研究。我需要一些澄清。我讀過很多不同的資源,有不同的做事方式。通過我的研究,我想我已經找到了一種方法。我只需要驗證一下我的假設。 – 2012-03-29 18:45:36

回答

5

Phonegap(或某些替代品)不是非常必要的,但對於從HTML/JS/CSS源創建應用程序包非常有幫助。 Phonegap不會創建可執行文件(您的IDE會這樣做),但它是Java到JavaScript功能的框架(使您可以從JavaScript中運行Java代碼)。

Phonegap基本上將您的HTML/JS/CSS網站包裝在webview中,以便您的代碼可以通過設備的瀏覽器進行解釋(有時以比通常運行瀏覽器更加防砂的方式進行解釋,例如pre-iOS-5 webview實例不會獲得Nitro JS引擎,因此它們比Mobile Safari瀏覽器中的網站運行速度慢)。

如果您的網站非常簡單,它不會使用任何其他Phonegap功能,但是由於它已經被放入Phonegap並且設備不必下載Phonegap,因此您可以創建自己的webview。你也可以使用Phonegap。

Phonegap Build(https://build.phonegap.com/)是一個程序,您可以購買這些程序以創建應用程序包並將其提交到Apple/Google/RIM/Windows應用程序商店。一般而言,您只需使用您自己的IDE即可完成此操作。例如,要創建iOS應用程序,您必須使用新的Apple計算機(您必須擁有最新的操作系統版本才能構建最新版本的iOS軟件包)。 iOS應用包XCode中創建和Eclipse IDE是一個非常普遍的環境中創建Android應用程序包:http://developer.android.com/sdk/eclipse-adt.html

我注意到你說你正在使用$.mobile.loadPage()加載頁面到DOM和$.mobile.changePage()導航用戶的頁面。如果你只是使用$.mobile.changePage(),那麼它會自動抓取頁面loadPage()。如果您正在使用loadPage()預加載內容,那麼退房的jQuery Mobile的預取能力:http://jquerymobile.com/demos/1.1.0-rc.1/docs/pages/page-cache.html

UPDATE 2014年

我最近建成使用科爾多瓦3.5某些應用程序和生成過程是非常如此簡化。包構建過程現在通過您的系統控制檯進行管理,從安裝插件到重新構建應用程序包都非常容易。

+0

感謝您的回覆。關於loadPage和changePage,當我按照文檔離開它們時,jQueryMobile會從DOM中移除頁面。由於該頁面不再位於DOM中,因此changePage失敗。所以,當我登陸頁面時,我使用loadPage將所有可能的頁面加載到DOM中(現在可以管理),然後我可以根據需要調用changePage。每個頁面都有一個「type」屬性,所以當用戶導航到不再需要這些舊頁面的新區域時,我可以刪除某個類型的所有頁面。有沒有更好的辦法? – 2012-03-29 19:48:54

+0

如果您在data-role =「page」元素中設置了data-dom-cache =「true」'屬性,那麼jQuery Mobile在離開時不會移除頁面。否則,我確保爲每個'data-role =「page」'元素手動設置data-url屬性爲絕對URL,因此當您使用'$ .mobile.changePage('/ about-us/default .html'),框架將能夠匹配該字符串到頁面的data-url屬性(如果它已經存在於DOM中)。 – Jasper 2012-03-29 20:00:16

+0

Gotcha。謝謝你的提示。我超級專注於性能,並擔心DOM會填滿頁面。應用程序有不同的部分,所以如果我設置data-dom-cache =「true」,那麼我擔心隨着時間的推移DOM將會填滿。所以,我創建了一個方法,每個頁面都有一個類型屬性和它所屬的部分的值。因此,當用戶轉到其他部分時,我可以從舊部分刪除所有頁面。這是DOM維護。這種方法好嗎?我不願意讓DOM填充頁面。再次感謝你的幫助。 – 2012-03-29 20:18:39