目的:
ミニ プログラムの応答速度の遅さとユーザー エクスペリエンスの悪さの問題を解決します。
(学習ビデオ共有: プログラミングビデオ)
最適化方法は次のとおりです:
1. ページの読み込み速度の向上
In small このプログラム環境で、ページの読み込み速度を向上させるにはどうすればよいでしょうか?大きな質問ですので、もう少し具体的にお話しますと、ユーザーがリンクをクリックしてから新しいページを開くまでの時間を短縮するにはどうすればよいでしょうか?重要な点は次のとおりです:
ユーザーのクリック動作に応答してページがジャンプし始めてから、新しいページの onload イベントがトリガーされるまでに遅延があります。この遅延は約 100 ~ 300 ミリ秒です (Android の応答) iosよりも遅い)一部)。
この遅延は短くありません。この時間を利用して、新しいページに必要なネットワーク リクエストを事前に開始できます。このようにして、100 ~ 300 ミリ秒 (またはネットワーク要求の時間) が節約されます。
このギャップがあることを知った後、コードを実装するにはどうすればよいでしょうか?
端的に言えば、BページのデータをAページにプリロードする機能を実装することです。ただし、この種のページ間の呼び出しでは、ロジックが簡単に複雑になり、異なるページのロジックが結合される可能性があります。したがって、ページ間の結合や開発の複雑さを増すことなく、プリロード ロジックを目に見えないように隠したいと考えています。
以下では、Tencent Video アプレットを例として技術的な実装を説明します。
ミニ プログラムのホームページ:
ユーザーがポスター画像をクリックすると、次のコード (1 行のみ) が実行されます。
最初の例と同様に、$preLoad() メソッドがここで定義され、onPreload イベントがページに拡張されます。ページが $preLoad() を呼び出した後、基本クラスはページに対応する onPreload 関数を自動的に見つけ、プリロード操作を実行するようにページに通知します。最初の例とは異なり、ここでプリロードされたデータはストレージに保存されます。これは、ユーザーがページにすぐにアクセスできない可能性があり、データをグローバル変数に保存すると、ミニ プログラムが占有するメモリが増加するためです。 WeChat は、メモリを大量に消費する小さなプログラムを躊躇なく強制終了します。
おそらく、アプリ開発経験のあるほとんどの学生にとって、より一般的なアプローチは、最初に最後にキャッシュされたデータをページに表示させ、次にリアルタイムで新しいデータを取得してから、ページを更新することです。ミニ プログラムのパフォーマンスとページ レンダリング速度はネイティブ アプリほど良くないため、この方法はミニ プログラムでは適切なエクスペリエンスではない可能性があります。大きなデータを UI 層に送信するのは重い操作です。したがって、この方法はお勧めできません。
3. デフォルト データのサイズを減らす
先ほど述べたように、WeChat は新しいページを開いたときにページ オブジェクトをディープ コピーするため、サイズを減らすように努める必要があります。デフォルト データを削除し、オブジェクトの数を減らします。その中のカスタム プロパティ。写真あり、真実あり:
# 100 個の属性を持つデータ オブジェクトをテスト ケースとして使用すると、iPhone 6 ではページの作成時間が 150 ミリ秒増加します。
4. コンポーネント化ソリューション
WeChat はミニ プログラムのコンポーネント化ソリューションを提供していません (実装する必要があると思います)。しかし、コンポーネント化について話さないと、いくらコードを書いても無駄になってしまいます。ここでは単純なコンポーネントの実装を示します。
Tencent のビデオ再生ページを例にとると、ページの定義は次のとおりです:
このうち、P() 関数はカスタム ベースです。クラス。これは非常に便利で、pv 統計、ソース統計、拡張ライフサイクル関数、コンポーネント化などを含むすべての一般的なロジックを基本クラスに記述することができます。
関数の最初のパラメータはページ名で、ページのキーとして使用されます。 2 番目はページ オブジェクトで、ロードされるすべてのコンポーネントを含む comps 配列を拡張します。
プレーヤーのコンポーネント/comps/player/index.js を例に挙げます:
コンポーネントの定義は通常のページとまったく同じです。 onLoad や onShow などのイベントには、ページ応答用のコールバック メソッドもあります。 wxml テンプレートで定義されたイベントは、js イベントに 1 対 1 で対応します。
基本クラスが行うことは、これらのコンポーネント オブジェクトのプロパティとメソッドを Page オブジェクトにコピーすることです (浅いコピー)。データ属性は結合されます。 WeChat の事前定義されたライフサイクル関数 (独自の拡張機能を含む) はキューにカプセル化され、順番に実行されます。たとえば、システムが onLoad メソッドを呼び出すと、実際にはすべてのコンポーネントの onLoad メソッドが実行され、最後にページの onLoad が実行されます。
上記はコード部分ですが、wxmlテンプレートとwxss部分については手動でインポートする必要があります。
wxml:
以上がミニプログラムの応答速度が遅い問題の解決方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。