JqueryMobile と Phoenagap を使用して iPhone アプリを開発しました。すべてのファイルをコードで縮小し、未使用のファイルを削除しましたが、アプリはまだかなり遅いです。問題は. ボタンをタップすると、変形が開始されます。1秒後。ページ遷移をもっと早くしたい。
未使用のデバイス(カメラなど)も無効にしますが、それでも遅いですか。
誰でもこの問題で私を助けることができますか?
iPhone 4gでテストしています。
JqueryMobile と Phoenagap を使用して iPhone アプリを開発しました。すべてのファイルをコードで縮小し、未使用のファイルを削除しましたが、アプリはまだかなり遅いです。問題は. ボタンをタップすると、変形が開始されます。1秒後。ページ遷移をもっと早くしたい。
未使用のデバイス(カメラなど)も無効にしますが、それでも遅いですか。
誰でもこの問題で私を助けることができますか?
iPhone 4gでテストしています。
jQuery オブジェクトをキャッシュする
Ex: var header = $('#header');
次の代替案を検討してください。
に変更するdisplay:none
方がはるかに高速です。多分ただ使用addClass('hidden')
してremoveClass('hidden')
遅い jQuery メソッドの使用を最小限に抑える O(n^2)
次の方法もコストがかかります。
これらの操作メソッドの背後にあるプロセスは次のとおりです。入力文字列を消去し、文字列を DOM フラグメントに変換して、DOM に挿入します。
セレクターを最適化します。
演奏順:
具体的に取得し、できれば最初に親の ID を選択します。
$('#test p.description').removeClass('hidden');
instead of
$('.description').removeClass('hidden');
可能であれば、子孫セレクターの代わりに子セレクターを使用します。
$('div > p').hide(); or $('div').children('p');
instead of
$('div p').hide(); or $('div').find('p');
コンテキスト検索を使用します。
$('div').find('p');
instead of
$('div', 'p');
タグ セレクターを使用する代わりに .filter() を使用します。
$('div.name').filter(':input');
instead of
$('div.name :input');
メモ化:
var myFunc = function (param) {
if (!myFunc.cache.hasOwnProperty(param)) {
var result = {};
// ... expensive operation ...
myFunc.cache[param] = result;
}
return myFunc.cache[param];
};
// cache storage
myFunc.cache = {};
Brett Holt の回答は、アプリをより効率的にするための多くの優れたヒントを提供していますが、あなたが話している遅延の問題の一部は、アプリをレンダリングしている WebKit エンジンに関係していると思います。ダブルクリック イベントを可能にするために、クリックが登録されるまでに最大 300 ミリ秒の遅延が組み込まれています。
vclick
私の調査によると、コンセンサスは「 」ではなく「 」イベントにバインドするようclick
です。vclick
オブジェクトをタップするとすぐに起動する必要があります。
私は自分のアプリで見つけたjquery.touchToClickというライブラリを使用してclick
いますvclick
。これにより、クリックイベントが非常に顕著に高速化されました。ただし、この問題を解決するための最も効率的な方法ではない可能性があることに注意してください。
LightningTouchjquery.touchToClick
などの代替ライブラリも見てきましたが、試したことはありません。