Javascript の単一および複数の実行コンテキストに関して、私は本当に混乱しています。このhttp://developer.appcelerator.com/blog/2010/08/execution-contexts.htmlを参照し ましたが、JS コンテキストの概要はよくわかりました。しかし、Titanium でアプリケーションを構築する際に、単一または複数のコンテキストをいつ使用するのが良いのかわかりません。
1 に答える
ベストプラクティスのドキュメント(強調私のもの)から:
Titanium Mobileを使用すると、(現在のファイルに対して)Javascriptファイルへのパスに設定されたurlプロパティを使用してウィンドウを作成できます。ウィンドウのopenメソッドが呼び出されると、関連付けられたJavaScriptファイルが評価され、セカンダリの「実行コンテキスト」が作成され、新しいスコープが作成されます。まれな場合を除いて、この複数のアクティブなJavaScript環境は避ける必要があります。
これらの複数の実行コンテキストは、スコープに他のスコープがないために問題を引き起こします。つまり、アプリケーションレベルのカスタムイベント(Titanium.App addEventListenerおよびfireEventを使用)を不当に使用しないと、コンテキスト間でデータを共有することはできません。また、循環参照やメモリリークが発生する可能性もあります。ライフサイクルの問題もあり、特定のJavaScriptファイルのコードがいつ評価されたかが不明確になります。
このアプローチにはいくつかの合理的なユースケースがあります。たとえば、新しいウィンドウごとにグローバルコンテキストに依存しない「クリーンな状態」が必要な「アプリ内のアプリ」などですが、通常はURLのあるウィンドウは使用しないでください。