簡単に小さいプログラムglobal Dataのあれらの事を話します。


私は厳冬の下で凍った土を掘り起こし、暗い塹壕の中で跳びはねました。私は命をかけて家の石板を守っています。焦土の匂いがする廃墟の下で永眠しています。
プログラムには、各ページに独自のデータがあるほか、グローバルデータストアがあります。globalDataの取得方法は以下の通りです。

let globalData = getApp().globalData
実際の業務コードにはいつもこのような状況があります。グローバルデータを使う必要があると書かれていますが、直接に現在の関数に上のコードを書くことはできません。他の関数と共有するため、jsファイルの先頭に戻ってコードを追加して、まだ壊れたところに戻って書き続けます。

//   12 
let globalData = getApp().globalData
//   15 
Page({
 data: { ... }
 //..   863 
 onButtonTap(e) {
  // ...
  let myData = globalData.myData
  // ...
 }
})

このように苦労して、コードの考えがなくなったかもしれません。このglobal Dataを直接使いたい関数で簡単に入手できますか?たとえば:

//   27 
Page({
 data: { ... }
 //..   863 
 onButtonTap(e) {
  // ...
  let myData = this.globalData.myData
  // ...
 }
})

あるいは別の方法でmyDataを取得して設定します。

let myData = this.$global('myData')
// ...
this.$global('myData', 2)

global方法を実現します

function global(name, value) {
 var globalData = getApp().globalData
 var data = {}
 // this.$global()
 if (arguments.length === 0) {
  return globalData
 }
 // this.$global('myData')
 if (arguments.length === 1) {
  if (is.string(name)) {
   return globalData[name]
  }
  // this.$global({
  //  name: 1
  // })
  if (is.object(name)) {
   data = name
  }
 }
 // this.$global('myData', 2)
 if (arguments.length === 2) {
  data[name] = value
 }
 return extend(data, data)
}
このうち、is.stringとis.objectはタイプ判定関数です。簡単に複数の操作global Dataを実現しました。詳細はコメントを参照してください。
thisにマウント
関数がありましたが、どうやって小さいプログラムのページにかけられたthisの中にありますか?前のページを見たら分かるかもしれません。小さいプログラムの元のPage関数を改造します。
二つの方法があります。一つは直接configに追加することです。

var originPage = Page
var global = require('../utils/global')

function MyPage(config) {
 // ...
 config.$global = global
 // ...
 originPage(config)
}

function page (config) {
 return new MyPage(config)
}

あるいは代理後のonLoad関数で定義します。

var originPage = Page
var global = require('../utils/global')

function MyPage(config) {
 this.watch = config.watch
 this.lifetimeBackup = {
  onLoad: config.onLoad
 }
 config.onLoad = function(options) {
  this.$global = global
  //     
  this.lifetimeBackup.onLoad.call(this, options)
 }
 
 // ...

 originPage(config)
}

締め括りをつける
このような方法では、モバイトプログラムの内部にthis.$util,this.$navigateなどの自分の業務に適したツール方法をパッケージ化するなど、多くの汎用的なウィジェットページを定義することができます。
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。