WeChatアプレットにおけるデータ保存実装方法

WeChatアプレットにおけるデータ保存実装方法

グローバル変数 globalData

ミニプログラムが最初に作成されると、app.js ファイルの App メソッドに渡されるオブジェクトに、globalData パラメータがデフォルトで追加されます。すべてのページで、getApp メソッドを使用して、App メソッドによって渡されたオブジェクトを取得し、その中の globalData を取得できます。

const App = getApp();
定数 openId = App.globalData.openId;
App.globalData.openId = 1;
App.globalData.openId を削除します。

globalData の値はオブジェクトであり、オブジェクトと同じ方法で呼び出すことができます。 (globalData は必ずしもこの名前で呼ばれるわけではありません)

ページプライベート変数データ

各ページの js ロジック レイヤー ページは、オブジェクトを Page メソッドに渡します。データの値は、通常、現在のページの変数値を格納するために使用されます。その主な目的は、setData インターフェイスを介してビュー レイヤーと対話し、wxml ビュー レイヤーの表示コンテンツを変更することです。

データの値をビューレイヤーに渡す必要がない場合は、setData を使用するのではなく、代わりにオブジェクト操作を使用することをお勧めします。パフォーマンスを効果的に節約できます。
ページが初期化されると、データ内のデータがビュー レイヤーと対話します。さらに処理を進めると、オブジェクトに localData を追加して、現在のページに必要な変数を具体的に保存することもできます。

ページ({
 データ: {
  オープンID: 123
 },
 ローカルデータ: {
  タイムスタンプ: Date.now()
 }
})
this.setData({
 オープンID: 321
})
this.data.openId = 321;
this.localData.timeStamp = Data.now();

ストレージ

ストレージは、グローバル変数 globalData と同様に、ミニプログラムで非常に一般的な保存方法です。特定のページに限定されず、wx が提供するインターフェースを通じてどこからでも値を取得できます。

データは長期間保存でき、ログアウトして再度ログインしても消えないのが利点です。 (上限保存容量10M)
欠点は、非同期動作のため、各アクセスに比較的長い時間がかかることです。
wx は、追加、削除、変更、およびチェック インターフェイスを提供します (追加と変更は両方とも設定インターフェイスです)。以下は、データを保存する例です。

非同期ストレージ(デバイスのパフォーマンスによっては、実際にどれくらいの期間保存されるかはわかりません)

wx.setStorage({
 キー: 'キー',
 データ: '値',
 成功: res => {
  ...
 }
})
// サポートプロミス
wx.setStorage({キー: 'キー', データ: '値'})
 .then(res => {
  ...
 })

同期ストレージ(ブロッキングが発生します)

wx.setStorageSync('キー', '値')
...

ファイルストレージ fileSysteManager

fileSysteManager(以下、fs)は、テキストや画像データをファイルの形式でローカルに保存することができます。保存制限​​は10M(以前は200Mだったと記憶していますが、後で資料で10と見ました)。長期間保存され、削除しない限りミニプログラムのデータは消えません。

書く:

定数 fs = wx.getFileSystemManager();
fs.writeFile({
  ファイルパス: `${wx.env.USER_DATA_PATH}/_l${fileName}.txt`,
  データ: JSON.stringify(データ),
  エンコーディング: 'utf8'、
  成功(res) { ... }
})
  • filePath の env.userDatapath は、wx によって現在のプログラムに割り当てられたデフォルトのスペースです。コーダーは、その下にフォルダーを作成したり、ファイルを追加したりできます。
  • fileName はデータを保存するときのファイル名です。
  • data は保存されるデータであり、画像である場合もあります。
  • エンコーディング: エンコーディング形式。データが画像の場合はバイナリに調整できます。

読む

データにアクセスするときは、ファイル名と保存場所に注意してください。

fs.readFile({
  ファイルパス: `${wx.env.USER_DATA_PATH}/_l${fileName}.txt`,
  エンコーディング: 'utf8'、
  位置: 0,
  成功(res) {
 JSON.parse(res.data) 
  }
})

取り除く

fs.unlink({
  ファイルパス: `${wx.env.USER_DATA_PATH}/_l${fileName}.txt`,
  エンコーディング: 'utf8'、
  成功(res) {
 ...
  }
})

すべての fs 操作は非同期なので、処理ロジックに注意してください。

WeChatミニプログラムでのデータストレージの実装に関するこの記事はこれで終わりです。より関連性の高いミニプログラムのデータストレージコンテンツについては、123WORDPRESS.COMで以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも123WORDPRESS.COMを応援していただければ幸いです。

以下もご興味があるかもしれません:
  • WeChatミニプログラム:データの保存、値の転送、値の取得の詳細な説明
  • WeChatアプレットのデータ保存と値の取得の詳細
  • WeChatアプレットのローカルデータ保存例の詳細な説明
  • WeChatアプレット開発データ保存パラメータ転送データキャッシュ
  • WeChatアプレットのデータストレージとDjangoおよびその他のサービスがリクエストを送信する

<<:  mysql charset=utf8 本当に意味が分かりますか

>>:  Nginxサービス500:内部サーバーエラーの原因の1つ

推薦する

DockerコンテナでJupyterノートブックを設定する方法

Jupyter ノートブックは、主に Python コードの記述、より具体的にはディープラーニング開...

Linux で mysql-8.0.20 をインストールするための詳細なチュートリアル

** Linuxにmysql-8.0.20をインストールする**環境の紹介オペレーティングシステム:...

データベース接続プール Druid の使用手順

総合的なパフォーマンス、信頼性、安定性、スケーラビリティ、使いやすさなどの要素に基づいて、最適なデー...

DockerはClickHouseをインストールし、データテストを初期化します

クリックハウスの紹介ClickHouse は、SQL クエリを使用して分析データ レポートをリアルタ...

HTMLでカメラを読み込む方法

効果図: 全体的な効果: ビデオ読み込み中: 写真:ステップ1: HTML要素を作成するまず、HTM...

Node.js は、異なるリクエストパスに応じて異なるデータを返します。

目次1. 異なるリクエストパスに応じて異なるデータを返す方法を学びます。 2. 送信データ: データ...

js キャンバスは角丸画像を実現します

この記事では、角を丸くするためのjsキャンバスの具体的なコードを参考までに紹介します。具体的な内容は...

MYSQLパターンマッチングREGEXPの使用に関する一般的な話など

のようにLIKE ではデータ全体が一致する必要がありますが、REGEXP では部分的な一致のみが必要...

MySQL インデックスのパフォーマンス最適化の問題に対する解決策

MySQL によって作成される最適化はインデックスを追加することですが、インデックスを追加しても目的...

JavaScript の 50 以上のユーティリティ関数の概要

JavaScript は多くの素晴らしい機能を備えています。この記事では、作業効率の向上とコードのデ...

デザインのヒント: きっと気に入っていただけると思います

<br />このタイトルを見ると、見覚えがあるかもしれません。多くのウェブサイトが同様の...

MySQLの行ロックとテーブルロックの意味と違いの詳細な説明

1. はじめに行ロックとテーブルロックの違いは面接で頻繁に出てくるはずです。MySQL のロックにつ...

VMware Workstation 14 Pro インストール Ubuntu 16.04 チュートリアル

この記事では、VMware Workstation14 ProにUbuntu 16.04をインストー...

シンプルな HTML ビデオ プレーヤーを実装する方法

この記事では、シンプルな HTML ビデオ プレーヤーを実装する方法を紹介し、皆さんと共有します。詳...

MySQL の NOT IN 充填ピットの NULL 列の問題の解決方法

以前、会社で小さな機能に取り組んでいたとき、特定の状況でデータがいくつあるかを数えてから問題を修正し...