ホームページ WeChat アプレット ミニプログラム開発 ミニプログラム間のクロスページインタラクションの機能と方法

ミニプログラム間のクロスページインタラクションの機能と方法

Jun 10, 2020 pm 05:05 PM
アプレット

昨年末、WeChat ミニ プログラムのサブパッケージ サイズは 1,200 万に達しました。これは、ミニ プログラムが開発者に徐々に大きな権限を与えていることを示す一方で、また、一部のミニ プログラムでは、8M のサイズではもはや十分ではないことを示しています。今年はto Bミニプログラムアプリケーションも開発中です。ここでは、ページをまたがる対話のシナリオをいくつか示します。

B サイド アプリケーションのビジネス ニーズの場合、小規模なプログラム開発の複雑さは Web 開発よりも比較的複雑です。 1 つはデュアル スレッド処理メカニズムの問題であり、もう 1 つはページ スタック間の相互作用の問題です。

注: 現在、作成者は WeChat アプレットを開発するだけで済みます。アプレット ページでプロパティ動作オブザーバーなどの新しい関数を使用するために、コンポーネント コンストラクターを使用してページを構築しています。詳細については、WeChat アプレット コンポーネント コンストラクターを参照してください。マルチターミナル開発の必要がない場合は、試して良い経験を積むことをお勧めします。

パフォーマンス最適化カテゴリ


小規模プログラムの場合は、ページをクリックして wx.navigateTo をトリガーし、他のページにジャンプします。途中の空白期間 読み込み期間(下請けページの場合、空白期間は長くなります)ですが、これはミニプログラムの内部メカニズムであり、最適化する方法はありません。この面白くない期間が過ぎるのを待つしかありません。

ページに飛んで最初に数値を取得するロジックを考えると最適化できないでしょうか?答えは「はい」です。現在のページのデータを取得した直後にジャンプ操作を実行する方法はありません (この操作はさらに悪いです) が、現在のリクエストのキャッシュを使用できます。詳細については、以前のブログ記事 - 3 の素晴らしい記事を参照してください。 Promise オブジェクトの使用。

コードは次のとおりです:

const promiseCache = new Map()

export function setCachePromise(key, promise) {
  promiseCache.set(key, promise)
}

export function getCachePromise(key) {
  // 根据key获取当前的数据  
  const promise = promiseCache.get(key)
  // 用完删除,目前只做中转用途,也可以添加其他用途
  promiseCache.delete(key)
  return promise  
}
ログイン後にコピー

グローバル マップを作成し、そのマップを使用して Promise オブジェクトをキャッシュします。ジャンプする前のコードは次のとおりです:

// 导入 setCachePromise 函数

Component({
  methods: {
    getBookData(id) {
      const promise = // promise 请求
        setCachePromise(`xxx:${id}`, promise)      
    },  
    handleBookDetailShow(e) {
      const id = e.detail
      this.getBookData(id)
       wx.navigateTo({url: `xx/xx/x?id=${id}`})
    }
  }
})
ログイン後にコピー

とジャンプ 後続のコードも次のようになります:

// 导入 getCachePromise 函数

Component({
    properties: {
      id: Number  
    },
    lifetimes: {
      attached () {
        const id = this.data.id  
        // 取得全局缓存的promise
        const bookPromise = getCachePromise(`xxx:${id}`)
        bookPromise.then((res) => {
          // 业务处理
        }).catch(error => {
          // 错误处理  
        })
      }
    },
    methods: {
      getBook() {
        // 获取数据,以便于 错误处理 上拉刷新 等操作  
      }  
    }
})
ログイン後にコピー

このようにして、フェッチとページのロードのロジックを同時に処理できます。その後の削除や変更につながります。ただし、下請けのジャンプの間に追加するだけであれば、良い効果が得られる可能性があることを考慮してください。

煩わしくない場合は、WeChat ミニ プログラムのアプリケーション速度を向上させるためのヒントと wxpage フレームワークをさらに学習することができます。 ToC ユーザーの場合、ハードウェアやネットワーク環境に問題がある可能性がありますが、この最適化は非常に価値があります。

もちろん、コールド スタート時間を短縮するために、WeChat アプレットは定期的な更新データの事前取得機能を提供します。

注: 上記の PromiseCache は転送にのみ使用され、キャッシュには使用されません。キャッシュの追加を検討している場合は、私の以前のブログ記事「フロントエンド API リクエスト キャッシュ ソリューション」を参照してください。

通知クラス


対話が PC 側で行われる場合、データの CRUD。たとえば、詳細ページでデータを変更または削除した場合、以前に保存したリストのクエリ条件を直接呼び出して、リストに戻ったときに再度クエリを実行できますが、モバイル端末のドロップダウン スクロールのデザインでは、そのような機能はありません。以前のクエリ条件を直接呼び出して検索する方法。

一覧ページから詳細ページに入ると、詳細ページでは追加・変更のみの操作となります。その後、リストページに戻ります。このとき、データが変更されたことをユーザーに通知することができ、ユーザーはデータを更新するかどうかを決定できます。

編集ページでデータが変更された場合:

const app = getApp()

component({
  methods: {
    async handleSave() {
      //...
      app.globalData.xxxChanged = true
      //...  
    }
  }
})
ログイン後にコピー

List インターフェース:

const app = getApp()

component({
  pageLifetimes: {
    show() {
      this.confirmThenRefresh()
    }    
  },
  methods: {
    confirmThenRefresh() {
      // 检查 globalData,如果当前没有进行修改,直接返回 
      if(!app.globalData.xxxChanged) return
      wx.showModal({
        // ...
        complete: () => {
          // 无论确认刷新与否,都把数据置为 false 
          app.globalData.xxxChanged = false  
        }  
      })  
    }
  }  
})
ログイン後にコピー

もちろん、wx.setStorage または getCurrentPage を使用して取得することもできます。前のページ setData を使用してデータ通知を実行し、ユーザーがページを更新できるようにします。

サブスクリプション公開クラス


データの変更のみが含まれる場合は、ユーザーに更新操作を実行させることを選択できますが、削除の場合は、操作 たとえば、ユーザーが更新しないことを選択し、削除されたデータを誤ってクリックした場合、エラーが発生します。したがって、削除する必要がある場合は、エラーを避けるために、リスト ページに戻る前にリストを変更することが最善です。

mitt

github には数多くの pub/sub オープン ソース ライブラリがあります。特定の要件がない場合は、量が最も少ないものを使用します。このライブラリの作者は、マイクロ ライブラリの開発が好きな開発者で、有名な preact もこの人が作成したものです。ここではあまり詳しく説明しませんが、非常に簡単です。コードが次のとおりであることは誰でも理解できると思います (フロー ツールのチェックを除く):

export default function mitt(all) {
  all = all || Object.create(null);

  return {
    on(type, handler) {
      (all[type] || (all[type] = [])).push(handler);
    },

    off(type, handler) {
      if (all[type]) {
        all[type].splice(all[type].indexOf(handler) >>> 0, 1);
      }
    },
    emit(type, evt) {
      (all[type] || []).slice().map((handler) => { handler(evt); });
      (all['*'] || []).slice().map((handler) => { handler(type, evt); });
    }
  };
}
ログイン後にコピー

メソッドは on Emit と Off の 3 つだけです。

生成された mitt() 関数によって生成されたオブジェクトを複数のページにインポートするだけです (または、直接 app.globalData に置きます)。

Component({
  lifetimes: {
    attached: function() {
      // 页面创建时执行
      const changeData = (type, data) => {
        // 处理传递过来的类型与数据
      }
      this._changed = changeData
      bus.on('xxxchanged', this._changed)
    },
    detached: function() {
      // 页面销毁时执行
      bus.off('xxxchanged', this._changed)
    }
  }
})
ログイン後にコピー

这里mitt可以有多个页面进行绑定事件,如果需求仅仅只涉及到两个页面之间,我们就可以使用 wx.navigateTo 中的 EventChannel (页面间事件信息通道)。可以参考微信小程序wx.navigateTo方法里的events参数使用详情及场景,该方案的利好在于,传递到下一个页面的参数也可以通过 EventChannel 来通知,以便于解决 properties 传递数据不宜过大的问题。

注: 一个页面展示很多信息的时候,会造成小程序页面的卡顿以及白屏。小程序官方也有长列表组件 recycle-view。有需求的情况下可以自行研究,这个不在这里详述。

鼓励一下

如果你觉得这篇文章不错,希望可以给与我一些鼓励,在我的 github 博客下帮忙 star 一下。
博客地址

推荐教程:《微信小程序

以上がミニプログラム間のクロスページインタラクションの機能と方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Python を使用して WeChat アプレットを開発する Python を使用して WeChat アプレットを開発する Jun 17, 2023 pm 06:34 PM

モバイル インターネット技術とスマートフォンの普及により、WeChat は人々の生活に欠かせないアプリケーションになりました。 WeChat ミニ プログラムを使用すると、アプリケーションをダウンロードしてインストールすることなく、ミニ プログラムを直接使用して、いくつかの簡単なニーズを解決できます。この記事では、Python を使用して WeChat アプレットを開発する方法を紹介します。 1. 準備 Python を使用して WeChat アプレットを開発する前に、関連する Python ライブラリをインストールする必要があります。ここでは、wxpy と itchat の 2 つのライブラリを使用することをお勧めします。 wxpy は WeChat マシンです

小さなプログラムでも反応できますか? 小さなプログラムでも反応できますか? Dec 29, 2022 am 11:06 AM

ミニプログラムはreactを利用することができます 使い方: 1. 「react-reconciler」に基づいてレンダラーを実装し、DSLを生成します; 2. DSLを解析してレンダリングするためのミニプログラムコンポーネントを作成します; 3. npmをインストールし、開発者ビルドを実行しますツール内の npm; 4. パッケージを独自のページに導入し、API を使用して開発を完了します。

WeChat ミニ プログラムにカードめくり効果を実装する WeChat ミニ プログラムにカードめくり効果を実装する Nov 21, 2023 am 10:55 AM

WeChat ミニ プログラムでのカードめくり効果の実装 WeChat ミニ プログラムでは、カードめくり効果の実装は、ユーザー エクスペリエンスとインターフェイス インタラクションの魅力を向上させることができる一般的なアニメーション効果です。以下では、WeChat アプレットでカードめくりの特殊効果を実装する方法と、関連するコード例を詳しく紹介します。まず、ミニ プログラムのページ レイアウト ファイルに 2 つのカード要素を定義する必要があります。1 つは前面のコンテンツを表示するため、もう 1 つは背面のコンテンツを表示するためです。具体的なサンプル コードは次のとおりです: <!--index.wxml- ->&l

アリペイ、希少文字ライブラリを収集・補完する「漢字拾い-希少文字」ミニプログラムを開始 アリペイ、希少文字ライブラリを収集・補完する「漢字拾い-希少文字」ミニプログラムを開始 Oct 31, 2023 pm 09:25 PM

10月31日の当サイトのニュースによると、今年5月27日、アント・グループは「漢字拾いプロジェクト」の立ち上げを発表し、最近新たな進展を迎えた:アリペイが「漢字拾い-珍しい文字」ミニプログラムを開始協会からコレクションを収集する レア文字は、レア文字ライブラリを補完し、アリペイでのレア文字入力方法の改善に役立つように、レア文字に異なる入力エクスペリエンスを提供します。現在、ユーザーは「漢字ピックアップ」「珍文字」などのキーワードで検索することで「珍文字」アプレットに入ることができる。ミニプログラムでは、ユーザーがシステムで認識・入力されなかった珍しい文字の画像を送信し、確認後、Alipay のエンジニアがフォントライブラリに追加エントリを作成します。当サイトでは、発音が不明瞭な珍しい単語を対象とした最新の単語分割入力方法をミニプログラムで体験できることに注目しました。ユーザー解体

uniapp がミニ プログラムと H5 の間で迅速な変換を実現する方法 uniapp がミニ プログラムと H5 の間で迅速な変換を実現する方法 Oct 20, 2023 pm 02:12 PM

uniapp がミニ プログラムと H5 の間で迅速な変換を実現するには、具体的なコード例が必要ですが、近年、モバイル インターネットの発展とスマートフォンの普及に伴い、ミニ プログラムと H5 は不可欠なアプリケーション形式となっています。クロスプラットフォーム開発フレームワークとして、uniapp は一連のコードに基づいて小規模プログラムと H5 間の変換を迅速に実現し、開発効率を大幅に向上させます。この記事では、uniapp がミニ プログラムと H5 の間で迅速な変換を実現する方法と、具体的なコード例を紹介します。 1. uniapp uniaの紹介

ミニプログラム登録の操作方法 ミニプログラム登録の操作方法 Sep 13, 2023 pm 04:36 PM

ミニ プログラムの登録操作手順: 1. 個人 ID カード、法人営業許可証、法人 ID カードおよびその他の提出資料のコピーを準備します; 2. ミニ プログラム管理のバックグラウンドにログインします; 3. ミニ プログラム設定ページに入ります; 4. 「基本設定」を選択; 5. 出願情報を入力; 6. 出願資料をアップロード; 7. 出願申請を送信; 8. 審査結果を待ちます。出願が不合格の場合は、理由に応じて修正してください9. 出願のフォローアップ操作は可能です。

Python で簡単なチャット プログラムを作成するためのチュートリアル Python で簡単なチャット プログラムを作成するためのチュートリアル May 08, 2023 pm 06:37 PM

実装アイデア: チャット ルームのさまざまな機能を処理するために、スレッドのサーバー側を確立します。x02 クライアントの確立はサーバーよりもはるかに簡単です。クライアントの機能はメッセージの送受信と、特定の文字を特定の規則に従って入力するため、クライアント側では、メッセージ受信専用とメッセージ送信専用の 2 つのスレッドを使用するだけで、さまざまな機能を使用できます。使用しないでください。

WeChat ミニ プログラムのメンバーシップを取得する方法 WeChat ミニ プログラムのメンバーシップを取得する方法 May 07, 2024 am 10:24 AM

1. WeChat ミニ プログラムを開き、対応するミニ プログラム ページに入ります。 2. ミニ プログラム ページでメンバー関連の入り口を見つけます。通常、メンバーの入り口は下部のナビゲーション バーまたはパーソナル センターにあります。 3. メンバーシップポータルをクリックして、メンバーシップ申請ページに入ります。 4. 入会申込ページにて、携帯電話番号、氏名等の必要事項をご入力の上、送信してください。 5. ミニ プログラムは会員申請を審査します。審査に合格すると、ユーザーは WeChat ミニ プログラムの会員になることができます。 6. 会員になると、ユーザーはポイント、クーポン、会員限定アクティビティなど、より多くの会員権を享受できます。

See all articles