2011-05-31 51 views
4

我已經使用jQuery mobile構建了一個應用程序。除了不同Android設備之間的一些兼容性問題,我在Android系統上遇到的性能極差。因爲即使從jquerymobile.com乾淨的模板工作緩慢,我已經決定,也許刪除jQuery的不必要的部分將加快一點。但有沒有人試過它?它甚至有可能嗎?jQMobile依賴jQuery有多強烈?

+0

您的假設是有一些代碼行尚未執行,它們會導致性能問題? – 2011-05-31 08:17:55

+0

nope。移動設備的JavaScript緩存數量有限。對於iPhone 3G它大約是28kb。 jquery最小化超過這個尺寸本身3倍。加上jqm,樣式和我的代碼,它提供了〜180kb的數據。這是我的假設:) – voxoft 2011-05-31 08:21:24

回答

3

沒有jQuery本身就不可能運行jQuery Mobile。 (對於那些可能來到這裏但不知道的人)

您可以嘗試縮小JQ和JQM的大小。 不幸的是,我不認爲有很多要從jQuery中刪除。我會給它陽極想法和編輯;)

但是你確定可以「清理」jQuery Mobile,因爲它由小部件組成。從github獲取JQM,閱讀「編譯」,你就知道該怎麼做。 我打算做確切的事情,所以我很確定它可以完成。 如果您不使用選擇框,您可以從清單文件中刪除該小部件,並且在其making之後,其CSS和代碼不應進入構建。 因此,如果您不使用任何表單元素,可摺疊列表視圖等,那麼您可以輕鬆地將JQM縮小到(我的猜測)大約一半的大小,並且基礎仍然可以工作。

[編輯]

可能jQuery的萎縮將很難,但你可以嘗試刪除:

  • 新遞延AJAX處理(如果它不是太深集成)
  • 動畫
  • $ .css(可能,我不確定JQM是否使用它,但它是一大塊代碼,你可以在沒有它的情況下處理)

完成整理的最佳方法是用alert('damnit!')替換您認爲不需要的功能的主體,以查看您是否確實不需要它;) 爲了確保它仍然正常工作並且穩定您應該只替換綁定到名稱的函數。儘量不要替換或刪除任何返回函數的閉包或函數。

然後在您的代碼被測試之後執行以始終正常工作。重複測試後搞亂J *

+0

嗯,我在指望刪除一些jquery元素本身。事實上,例如jquery.com使用19或29%的jquery從我記得:)仍然感謝提示。 – voxoft 2011-05-31 08:54:29

+0

看我的編輯。另外 - 請注意,大多數jQuery的代碼不在暴露的函數中。幾乎一半是嘶嘶聲選擇器引擎(你不會刪除它),並且能夠使用JQM,你應該保持所有選擇器,遍歷,ajax(以及誰知道還有什麼)完好無損。 (或缺乏一些沒有使用的公共方法,但他們通常需要多達10行無壓縮) – naugtur 2011-05-31 09:36:00

+0

是啊,我已經多次瀏覽過jq代碼,所以我對如何一起工作有一些瞭解。 – voxoft 2011-05-31 10:15:04

3

我認爲真正的問題不是關於Javascript。這是由JQuery Mobile添加的HTML和CSS引起的。 JQuery Mobile會將div包裝器和CSS添加到原始HTML中。導致HTML臃腫與額外的div和CSS減慢性能。

你可以嘗試一個已經呈現的網頁,如果沒有jQuery和jQMobile javascript在iphone上。當您快速滾動時,它仍然很慢並閃爍。另一個框架iUI http://code.google.com/p/iui/在長列表上運行得更好,因爲html代碼和CSS更簡單。或者,你可以不使用CSS最簡單的長長的名單進行比較:

<ul> 
     <li> 1 </li> 
     <li> 2 </li> 
     ... 
     <li> 500 </li> 
    </ul> 
+0

是的,這更接近正確的答案。壓縮文件下載並不會改善滾動和其他問題w jQuery Mobile – 2012-01-27 02:24:16

1

我最近測試了很多使用jQuery和jQuery Mobile和我都沒有注意到我的ipad2的任何問題。我懷疑有很多這將歸結爲你想要支持過時的硬件多少。移動領域正在快速發展,我預測它將會像90年代後期那樣,當跨瀏覽器支持(甚至不提及支持多屏幕分辨率的有限選項)需要大量腳本和基於用戶的重定向代理檢測。