国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

ホームページ WeChat アプレット ミニプログラム開発 WeChatアプレット開発用ページインターセプタの詳細説明

WeChatアプレット開発用ページインターセプタの詳細説明

May 29, 2018 am 09:51 AM
アプレット プログラム開発 詳しい説明

この記事では主にWeChatアプレットのページインターセプターのサンプルコードを紹介しますが、編集者が非常に良いと思ったので、參考として共有させていただきます。エディターと一緒に見てみましょう

シーン

  • ミニ プログラムには 52 ページあり、そのうち 13 ページは ID を必要とせず、殘りの 39 ページはシステム ロールを必要とします。これらの 39 ページでは、WeChat ユーザーがシステム ロールを持っていない場合、ログイン ページにジャンプします。

  • 非同期リクエストを通じて取得する必要があるシステムロール情報があるかどうか。

要件の分析と実裝

実際に必要なのは、ミニプログラムページへのアクセスをフィルタリングするフィルターです。條件を満たすものは通過し、そうでないものは通過します。條件を満たす場合は他の方法で処理されます。

PHP の laravel フレームワークを使用したことがある方は、すぐに laravel フレームワークの http ミドルウェアを思い浮かべるはずです。

HTTP ミドルウェアは、アプリケーションに入る HTTP リクエストをフィルターする便利なメカニズムを提供します。たとえば、Laravel には、ユーザー認証を検証するためのミドルウェアがデフォルトで含まれています。ユーザーが認証されていない場合、ミドルウェアはユーザーをログイン ページに誘導します。ただし、ユーザーが認証されている場合、ミドルウェアはリクエストの続行を許可します。もちろん、認証に加えて、ミドルウェアを使用してさまざまなタスクを?qū)g行することもできます。CORS ミドルウェアは、プログラムから送信されるすべての応答に適切な応答ヘッダーを追加する役割を果たします。ログ ミドルウェアは、受信したすべてのアプリケーションを記録できます。リクエスト。

心配なのは、WeChat アプレットがページ インスタンス用のミドルウェア メカニズムを提供していないことです。したがって、ページ インスタンスのライフサイクルからのみ開始できます。

onLoad の場合、ページは 1 回だけ呼び出されます。onShow の場合、ページが開かれるたびに 1 回呼び出されます (たとえば、アプレットがバックグラウンドからフォアグラウンドに移動する)。

onLoad または onShow フック関數(shù)で、ユーザーの ID を確認し、渡された場合はページに必要なデータを取得し、そうでない場合はログイン ページにジャンプします。

//orderDetail.js
onShow: function () {
  let that = this;
  //身份校驗
  service.identityCheck(() => {
     //跳轉(zhuǎn)到登錄頁
     wx.redirectTo({
      url: "/pages/common/login/login"
     });
    }, () => {  
     //獲取頁面數(shù)據(jù)等等   
     that.getDetail(this.orderId);
     ...
    }
  );
 },

ただし、すべてのページをこのように記述する必要があり、繰り返しのコードが多く、非常に煩わしいものでもあります。裝飾関數(shù)でラップする方が良いです (より長い用語はデコレータ パターンです):

//filter.js
function identityFilter(pageObj){
  if(pageObj.onShow){
    let _onShow = pageObj.onShow;
    pageObj.onShow = function(){
      service.identityCheck(()=>{
        //跳轉(zhuǎn)到登錄頁
        wx.redirectTo({
          url: "/pages/common/login/login"
        });
      },()=>{
        //獲取頁面實例,防止this劫持
        let currentInstance = getPageInstance();
        _onShow.call(currentInstance);
      });
    }
  }
  return pageObj;
}

function getPageInstance(){
  var pages = getCurrentPages();
  return pages[pages.length - 1];
}

exports.identityFilter = identityFilter;

filter.js用以提供過濾器方法,除了現(xiàn)有的用戶身份攔截,后續(xù)如果需要其他攔截,可以在這個文件增加。然后,在需要用戶身份攔截的小程序頁面代碼里,用filter.identityFilter 処理するだけです:

//orderDetail.js
let filter = require('filter.js');
Page(filter.identityFilter({
  ...
  onShow: function () {
    //獲取頁面數(shù)據(jù)等等
    this.getDetail(this.orderId);
    //...
  },
  ...
}));

最適化に Promise を使用します

上記の実裝では、ページが更新されるたびに、にアクセスすると、ユーザーの ID を取得するメソッドが 1 回実行されます (つまり、上記のコードの service.identityCheck)。実際には必要ありません。ミニ プログラムの開始時に 1 回取得するだけです。つまり、app.jsのonLaunchメソッド內(nèi)で実行します。

各ミニプログラムページがインスタンス化されるとき、通常、ページに必要なデータを取得するために非同期メソッドが実行されます。重要なのは、ユーザー ID を取得するための非同期リクエストの後にページの非同期メソッドが実行される必要があることを確認する必要があるということです。

非同期リクエストの実行順序を処理するのに Promise が最適であることは疑いの余地がありません。マスター、コードを簡単に見てみましょう:

//app.js
App({
  onLaunch:function(){
    let p = new Promise(function(resolve,reject){
      service.identityCheck(resolve,reject);
    });
    this.globalData.promise = p; 
  },
  ...
  globalData: {
    promise:null,
  }  
});
//filter.js
const appData = getApp().globalData;
function identityFilter(pageObj){
  if(pageObj.onShow){
    let _onShow = pageObj.onShow;
    pageObj.onShow = function(){
      //改動點
      appData.promise.then(()=>{
        //跳轉(zhuǎn)到登錄頁
        wx.redirectTo({
          url: "/pages/common/login/login"
        });
      },()=>{
        //獲取頁面實例,防止this劫持
        let currentInstance = getPageInstance();
        _onShow.call(currentInstance);
      });
    }
  }
  return pageObj;
}

概要

基本的にはミニプログラムページのユーザーIDインターセプターを?qū)g裝しますが、まだlaravelのhttpミドルウェアより劣っています:

  • 各ページの必要性 コード一層で包まれています。

  • ユーザーの本人確認が失敗した場合でも、ミニ プログラムはページのレンダリングをブロックしません。ユーザー ID を取得する非同期メソッドの完了に 1 分かかる場合でも、ミニ プログラム ページは表示されたままで、1 分後にログイン ページにジャンプします。たとえば、この分間、ページには空白のコンテンツが表示されます。ロジックを自分で追加する必要があります。

以上がWeChatアプレット開発用ページインターセプタの詳細説明の詳細內(nèi)容です。詳細については、PHP 中國語 Web サイトの他の関連記事を參照してください。

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

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫像を無料で

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中國語版

SublimeText3 中國語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統(tǒng)合開発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Win11での管理者権限の取得について詳しく解説 Win11での管理者権限の取得について詳しく解説 Mar 08, 2024 pm 03:06 PM

Windows オペレーティング システムは世界で最も人気のあるオペレーティング システムの 1 つであり、その新バージョン Win11 が大きな注目を集めています。 Win11 システムでは、管理者権限の取得は重要な操作であり、管理者権限を取得すると、ユーザーはシステム上でより多くの操作や設定を?qū)g行できるようになります。この記事では、Win11システムで管理者権限を取得する方法と、権限を効果的に管理する方法を詳しく紹介します。 Win11 システムでは、管理者権限はローカル管理者とドメイン管理者の 2 種類に分かれています。ローカル管理者はローカル コンピュータに対する完全な管理権限を持っています

C++のmode関數(shù)の詳しい解説 C++のmode関數(shù)の詳しい解説 Nov 18, 2023 pm 03:08 PM

C++ のモード関數(shù)の詳細な説明 統(tǒng)計において、モードとは、一連のデータ內(nèi)で最も頻繁に現(xiàn)れる値を指します。 C++ 言語では、モード関數(shù)を記述することによって、任意のデータセット內(nèi)のモードを見つけることができます。モード関數(shù)はさまざまな方法で実裝できます。一般的に使用される 2 つの方法を以下で詳しく紹介します。 1 つ目の方法は、ハッシュ テーブルを使用して各數(shù)値の出現(xiàn)回數(shù)をカウントすることです。まず、各數(shù)値をキー、出現(xiàn)回數(shù)を値とするハッシュ テーブルを定義する必要があります。次に、特定のデータセットに対して次を?qū)g行します。

WeChat ミニ プログラムにカードめくり効果を?qū)g裝する WeChat ミニ プログラムにカードめくり効果を?qū)g裝する Nov 21, 2023 am 10:55 AM

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

Oracle SQLの除算演算の詳細説明 Oracle SQLの除算演算の詳細説明 Mar 10, 2024 am 09:51 AM

OracleSQL の除算演算の詳細な説明 OracleSQL では、除算演算は一般的かつ重要な數(shù)學演算であり、2 つの數(shù)値を除算した結(jié)果を計算するために使用されます。除算はデータベース問合せでよく使用されるため、OracleSQL での除算演算とその使用法を理解することは、データベース開発者にとって重要なスキルの 1 つです。この記事では、OracleSQL の除算演算に関する関連知識を詳細に説明し、読者の參考となる具體的なコード例を示します。 1. OracleSQL での除算演算

C++の剰余関數(shù)の詳しい解説 C++の剰余関數(shù)の詳しい解説 Nov 18, 2023 pm 02:41 PM

C++ の剰余関數(shù)の詳しい説明 C++ では、剰余演算子 (%) を使用して、2 つの數(shù)値を除算した余りを計算します。これは、オペランドが任意の整數(shù)型 (char、short、int、long など) または浮動小數(shù)點數(shù)型 (float、double など) になる二項演算子です。剰余演算子は、被除數(shù)と同じ符號の結(jié)果を返します。たとえば、整數(shù)の剰余演算の場合、次のコードを使用して実裝できます。

numpyのバージョンクエリメソッドの詳細説明 numpyのバージョンクエリメソッドの詳細説明 Jan 19, 2024 am 08:20 AM

Numpy は、豊富な配列演算関數(shù)とツールを提供する Python 科學計算ライブラリです。 Numpy のバージョンをアップグレードする場合、互換性を確保するために現(xiàn)在のバージョンをクエリする必要がありますが、この記事では Numpy のバージョン クエリの方法と具體的なコード例を詳しく紹介します。方法 1: Python コードを使用して Numpy のバージョンをクエリします。Python コードを使用して簡単に Numpy のバージョンをクエリできます。実裝方法とサンプル コードは次のとおりです: importnumpyasnpprint(np

PHPモジュロ演算子の役割と使い方を詳しく解説 PHPモジュロ演算子の役割と使い方を詳しく解説 Mar 19, 2024 pm 04:33 PM

PHP のモジュロ演算子 (%) は、2 つの數(shù)値を除算した余りを取得するために使用されます。この記事では、モジュロ演算子の役割と使用法について詳しく説明し、読者の理解を深めるために具體的なコード例を示します。 1. モジュロ演算子の役割 數(shù)學では、整數(shù)を別の整數(shù)で割ると、商と余りが得られます。たとえば、10 を 3 で割ると、商は 3 になり、余りは 1 になります。モジュロ演算子は、この剰余を取得するために使用されます。 2. モジュロ演算子の使用法 PHP では、% 記號を使用してモジュロを表します。

Linuxシステムコールsystem()関數(shù)の詳細説明 Linuxシステムコールsystem()関數(shù)の詳細説明 Feb 22, 2024 pm 08:21 PM

Linux システム コール system() 関數(shù)の詳細説明 システム コールは、Linux オペレーティング システムの非常に重要な部分であり、システム カーネルと対話する方法を提供します。その中でも、system()関數(shù)はよく使われるシステムコール関數(shù)の一つです。この記事では、system() 関數(shù)の使用法を詳しく紹介し、対応するコード例を示します。システム コールの基本概念 システム コールは、ユーザー プログラムがオペレーティング システム カーネルと対話する方法です。ユーザープログラムはシステムコール関數(shù)を呼び出してオペレーティングシステムを要求します。

See all articles