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

目次
1. 背景
2. 二次カプセル化の理由
##3. 特定のカプセル化の実裝
ホームページ WeChat アプレット ミニプログラム開発 ミニプログラムでネットワークリクエストを再カプセル化する方法

ミニプログラムでネットワークリクエストを再カプセル化する方法

Nov 02, 2021 am 11:16 AM
カプセル化 アプレット ネットワークリクエスト

この記事では、WeChat アプレット開発におけるネットワーク リクエストのカプセル化について紹介し、二次カプセル化の理由と具體的なカプセル化の実裝について説明します。

ミニプログラムでネットワークリクエストを再カプセル化する方法

1. 背景

WeChat ミニ プログラムを開発する場合、ネットワーク リクエストの操作が必然的に含まれます。ミニ プログラムは API を提供します。ネイティブ ネットワークによって要求されたものは次のとおりです:

wx.request({
  url: 'https://test.com/******', //僅為示例,并非真實的接口地址
  data: {
    x: '',
    y: ''
  },
  header: {
    'content-type': 'application/json' // 默認(rèn)值
  },
  success (res) {
    console.log(res.data)
  }
})

その中に:

  • url: 要求されたバックエンド インターフェイス アドレス;

  • data: リクエスト インターフェイスによって運ばれる必要があるパラメータ;

  • header: リクエスト ヘッダーを設(shè)定します、content-type のデフォルトは application/json、

  • success: リクエストが成功した後のコールバックです。res にはリクエストが成功した後に返されるデータが含まれます。

wx.request の使用方法の詳細については、公式の紹介文をご覧ください。

RequestTask | WeChat Open Document

公式 API が提供されているのに、なぜ再度カプセル化する必要があるのでしょうか?

2. 二次カプセル化の理由

最初のポイントはコードの重複を避けることです

コードの重複を避けることは、主に次の點に反映されています:

1) 當(dāng)社はバックエンド インターフェイスを呼び出します。ログイン インターフェイスに加えて、他のインターフェイスのリクエストでは、リクエスト ヘッダーにトークンを追加する必要があります。カプセル化では、ネットワークリクエストを行うたびにトークンを渡す必要があり、非常に面倒です。

2) ネットワーク リクエストを行う場合、多くの場合、ロード中であることをユーザーに通知するロード ボックスを提供する必要があります。次の図に示すように:

ミニプログラムでネットワークリクエストを再カプセル化する方法

カプセル化がない場合、各ネットワーク リクエストで読み込みボックスをポップアップする必要がある場合は、次のコードを繰り返し記述する必要があります。

リクエストが開始されたら、ローディングボックス。

ミニプログラムでネットワークリクエストを再カプセル化する方法

リクエストが終了したら、読み込みボックスを非表示にします。

ミニプログラムでネットワークリクエストを再カプセル化する方法

2 番目のポイント、回避コールバック地獄

ページに複數(shù)のネットワーク リクエストがあり、リクエストに特定の順序がある場合、wx.request は非同期操作であり、最も直接的な結(jié)果は次のようになります。

onLoad: function () {
    wx.request({
      url: 'https://test.com/api/test01',
      success:res=>{
        wx.request({
          url: 'https://test.com/api/test02',
          success: res=>{
            wx.request({
              url: 'https://test.com/api/test03',
              success: res=>{
                testDataList: res.content
              }
            })
          }
        })
      }
    })
  },

ロシアのマトリョーシカ人形に似ていませんか?

この書き方を避けるために、當(dāng)然カプセル化されており、ここではPromiseを使用しています。

Prolise の概要については、Liao Xuefeng の公式 Web サイトにアクセスして詳細をご覧ください。

https://www.liaoxuefeng.com/wiki/1022910821149312/1023024413276544

##3. 特定のカプセル化の実裝

プロジェクト構(gòu)造:

ミニプログラムでネットワークリクエストを再カプセル化する方法

utils フォルダーに 2 つの新しいファイルが作成されました。

1) httpUtils.js

ネットワーク リクエストのカプセル化、具體的なコードは次のとおりです:

const ui = require('./ui');
const BASE_URL = 'https://www.wanandroid.com'


/**
 * 網(wǎng)絡(luò)請求request
 * obj.data 請求接口需要傳遞的數(shù)據(jù)
 * obj.showLoading 控制是否顯示加載Loading 默認(rèn)為false不顯示
 * obj.contentType 默認(rèn)為 application/json
 * obj.method 請求的方法  默認(rèn)為GET
 * obj.url 請求的接口路徑 
 * obj.message 加載數(shù)據(jù)提示語
 */
function request(obj) {
    return new Promise(function(resolve, reject) {
      if(obj.showLoading){
        ui.showLoading(obj.message? obj.message : '加載中...');
      }
      var data = {};
      if(obj.data) {
        data = obj.data;
      }
      var contentType = 'application/json';
      if(obj.contentType){
        contentType = obj.contentType;
      } 
  
      var method = 'GET';
      if(obj.method){
        method = obj.method;
      }
  
      wx.request({
        url: BASE_URL + obj.url,
        data: data,
        method: method,
        //添加請求頭
        header: {
          'Content-Type': contentType ,
          'token': wx.getStorageSync('token') //獲取保存的token
        },
        //請求成功
        success: function(res) {
          console.log('===============================================================================================')
          console.log('==    接口地址:' + obj.url);
          console.log('==    接口參數(shù):' + JSON.stringify(data));
          console.log('==    請求類型:' + method);
          console.log("==    接口狀態(tài):" + res.statusCode);
          console.log("==    接口數(shù)據(jù):" + JSON.stringify(res.data));
          console.log('===============================================================================================')
          if (res.statusCode == 200) {
            resolve(res);
          } else if (res.statusCode == 401) {//授權(quán)失效
            reject("登錄已過期");
            jumpToLogin();//跳轉(zhuǎn)到登錄頁
          } else {
            //請求失敗
            reject("請求失敗:" + res.statusCode)
          }
        },
        fail: function(err) {
          //服務(wù)器連接異常
          console.log('===============================================================================================')
          console.log('==    接口地址:' + url)
          console.log('==    接口參數(shù):' + JSON.stringify(data))
          console.log('==    請求類型:' + method)
          console.log("==    服務(wù)器連接異常")
          console.log('===============================================================================================')
          reject("服務(wù)器連接異常,請檢查網(wǎng)絡(luò)再試");
        },
        complete: function() {
          ui.hideLoading();
        }
      })
    });
  }
  

  //跳轉(zhuǎn)到登錄頁
  function jumpToLogin(){
    wx.reLaunch({
      url: '/pages/login/login',
    })
  }
  
  module.exports = {
    request,
  }

There詳細はコードにあります。注、ここではあまり説明しません。

2) ui.js

は主に、wx UI 操作の単純なカプセル化です。コードは次のとおりです:

export const showToast = function(content,duration) {
    if(!duration) duration = 2000
    wx.showToast({
        title: content,
        icon: 'none',
        duration: duration,
    })
  }
  
  var isShowLoading = false
  export const showLoading = function(title) {
    if(isShowLoading) return
    wx.showLoading({
        title: title?title:'',
        mask:true,
        success:()=>{
            isShowLoading = true
        }
    })
  }
  
  export const hideLoading = function() {
    if(!isShowLoading) return
    isShowLoading = false
    wx.hideLoading()
  }

3) 特定の呼び出し

は、index.js でネットワーク リクエストを作成しました。具體的なコードは次のとおりです:

// index.js
const httpUtils = require('../../utils/httpUtils')
const ui = require('../../utils/ui')

Page({
  data: {
    str:null,
  },

  onLoad() {
  },

  //獲取接口數(shù)據(jù)
  getNetInfo(){
    let obj = {
      method: "POST",
      showLoading: true,
      url:`/user/register?username=pppooo11&password=pppooo&repassword=pppooo`,
      message:"正在注冊..."
    }
    httpUtils.request(obj).then(res=>{
      this.setData({
        str:JSON.stringify(res)
      })
      ui.showToast(res.data.errorMsg)
    }).catch(err=>{
      console.log('ERROR')
    });
  }
})
わかりました。上記の內(nèi)容が役に立った場合は、「いいね」を付けることを忘れないでください。

コードは github にアップロードされています。興味がある場合は、クリックしてダウンロードできます。

https://github.com/YMAndroid/NetWorkDemo

プログラミング関連の知識については、

プログラミング入門をご覧ください。 !

以上がミニプログラムでネットワークリクエストを再カプセル化する方法の詳細內(nèi)容です。詳細については、PHP 中國語 Web サイトの他の関連記事を參照してください。

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

ホット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)

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

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

TrendForce: Nvidia の Blackwell プラットフォーム製品により、TSMC の CoWoS 生産能力は今年 150% 増加します TrendForce: Nvidia の Blackwell プラットフォーム製品により、TSMC の CoWoS 生産能力は今年 150% 増加します Apr 17, 2024 pm 08:00 PM

4月17日の當(dāng)サイトのニュースによると、TrendForceは最近、Nvidiaの新しいBlackwellプラットフォーム製品に対する需要は強気で、2024年にはTSMCのCoWoSパッケージング総生産能力が150%以上増加すると予想されるレポートを発表した。 NVIDIA Blackwell の新しいプラットフォーム製品には、B シリーズ GPU と、NVIDIA 獨自の GraceArm CPU を統(tǒng)合する GB200 アクセラレータ カードが含まれます。 TrendForce は、サプライチェーンが現(xiàn)在 GB200 について非常に楽観的であることを確認(rèn)しており、2025 年の出荷臺數(shù)は 100 萬臺を超え、Nvidia のハイエンド GPU の 40 ~ 50% を占めると予想されています。 Nvidiaは今年下半期にGB200やB100などの製品を提供する予定だが、上流のウェーハパッケージングではさらに複雑な製品を採用する必要がある。

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

10月31日の當(dāng)サイトのニュースによると、今年5月27日、アント?グループは「漢字拾いプロジェクト」の立ち上げを発表し、最近新たな進展を迎えた:アリペイが「漢字拾い-珍しい文字」ミニプログラムを開始協(xié)會からコレクションを収集する レア文字は、レア文字ライブラリを補完し、アリペイでのレア文字入力方法の改善に役立つように、レア文字に異なる入力エクスペリエンスを提供します?,F(xiàn)在、ユーザーは「漢字ピックアップ」「珍文字」などのキーワードで検索することで「珍文字」アプレットに入ることができる。ミニプログラムでは、ユーザーがシステムで認(rèn)識?入力されなかった珍しい文字の畫像を送信し、確認(rèn)後、Alipay のエンジニアがフォントライブラリに追加エントリを作成します。當(dāng)サイトでは、発音が不明瞭な珍しい単語を?qū)澫螭趣筏孔钚陇螀g語分割入力方法をミニプログラムで體験できることに注目しました。ユーザー解體

uniapp がミニ プログラムと H5 の間で迅速な変換を?qū)g現(xiàn)する方法 uniapp がミニ プログラムと H5 の間で迅速な変換を?qū)g現(xiàn)する方法 Oct 20, 2023 pm 02:12 PM

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

AMD「Strix Halo」FP11のパッケージサイズを公開:Intel LGA1700と同等、Phoenixより60%大きい AMD「Strix Halo」FP11のパッケージサイズを公開:Intel LGA1700と同等、Phoenixより60%大きい Jul 18, 2024 am 02:04 AM

このWebサイトは7月9日、AMD Zen5アーキテクチャの「Strix」シリーズプロセッサには2つのパッケージングソリューションがあり、小型のStrixPointはFP8パッケージを使用し、StrixHaloはFP11パッケージを使用すると報じた。出典: videocardz 出典 @Olrak29_ 最新の事実は、StrixHalo の FP11 パッケージ サイズが 37.5mm*45mm (1687 平方ミリメートル) であり、これは Intel の AlderLake および RaptorLake CPU の LGA-1700 パッケージ サイズと同じであるということです。 AMD の最新の Phoenix APU は、サイズ 25*40mm の FP8 パッケージング ソリューションを使用しています。これは、StrixHalo の F

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

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

C++ 関數(shù)はコードをカプセル化することで GUI 開発の効率をどのように向上させますか? C++ 関數(shù)はコードをカプセル化することで GUI 開発の効率をどのように向上させますか? Apr 25, 2024 pm 12:27 PM

コードをカプセル化することにより、C++ 関數(shù)は GUI 開発効率を向上させることができます。 コードのカプセル化: 関數(shù)はコードを獨立した単位にグループ化し、コードの理解と保守を容易にします。再利用性: 関數(shù)はアプリケーション間で再利用できる共通の機能を作成し、重複やエラーを削減します。簡潔なコード: カプセル化されたコードにより、メイン ロジックが簡潔になり、読みやすく、デバッグしやすくなります。

PHP のパッケージング技術(shù)とアプリケーション PHP のパッケージング技術(shù)とアプリケーション Oct 12, 2023 pm 01:43 PM

PHP のカプセル化テクノロジとアプリケーションのカプセル化は、オブジェクト指向プログラミングにおける重要な概念であり、外部プログラムに統(tǒng)一されたアクセス インターフェイスを提供するために、データとデータに対する操作を一緒にカプセル化することを指します。 PHP では、アクセス制御修飾子とクラス定義を通じてカプセル化を?qū)g現(xiàn)できます。この記事では、PHP のカプセル化テクノロジとそのアプリケーション シナリオを紹介し、いくつかの具體的なコード例を示します。 1. カプセル化されたアクセス制御修飾子 PHP では、カプセル化は主にアクセス制御修飾子によって実現(xiàn)されます。 PHP には 3 つのアクセス制御修飾子が用意されています。

See all articles