0

Für lange Zeit habe ich Apps erstellt, indem ich eine globale Variable erstellt habe, die über von mir geladene Module zugänglich war.Zugriff auf den globalen Wert von commonJS-Modul in Appcelerator?

var myApp = { 
    windows: {} 
} 

myApp.windows.mainWindow = require('libs/pages/mainWindow').create(); 

myApp.windows.mainWindow.open(); 

von myApp.windows[windowName][functionName] Aufruf ich andere Fenster manipulieren könnte (zB Update-Listen) aus dem Commonjs Modul. Ich könnte auch schließen, andere Fenster öffnen

Ich fand, dass das Aufrufen globaler Variablen aus dem commonJS-Modul nicht gute Praxis (und einige Probleme aufgetreten, wenn App von Push geöffnet wurde).

Was ist der beste Ansatz, um auf andere Fenster zuzugreifen, wenn der Fensterinhalt vom commonJS-Modul geladen wird?

Antwort

1

IIRC, die Art, wie Sie auf Globals zugreifen, funktioniert unter iOS, aber nicht unter Android. Du hast Recht, es ist keine gute Übung. Sie können jedoch globale Variablen in einem Modul speichern.

Erstellen Sie ein Modul libs/Globals.js:

Globals = function() {}; 

Globals.windows = {}; 
module.exports = Globals; 

Jetzt in Ihrem app.js, tun Sie dies:

var G = require ('libs/Globals') 
G.windows.mainWindow = require('libs/pages/mainWindow').create(); 

Jedes Mal, wenn eine Instanz einer von ihnen verweisen möchten Fenster von innen einem anderen Commonjs Modul, benutzen Sie einfach die Globals Modul:

var G = require ('libs/Globals') 
G.windows.mainWindow.close(); 

über Halt an r Vorsicht Verweise auf diese Fenster, nachdem du denkst, dass du sie geschlossen und zerstört hast. Wenn Sie Verweise auf sie im globalen Modul hinterlassen, wird kein Müll gesammelt und Sie können Speicher-/Ressourcen-Lecks erstellen.

Verwandte Themen