對於Javascript中的單個和多個執行上下文,我感到非常困惑。 我提到這個http://developer.appcelerator.com/blog/2010/08/execution-contexts.html 雖然我有一個很好的JS上下文的概述。 但我不知道什麼時候在Titanium中構建應用程序時使用單個或多個上下文是很好的。JavaScript(Titanium)中的單個執行上下文和多個執行上下文之間的區別
回答
從Best Practices Documentation(重點煤礦):
鈦手機,就可以創建一個設置爲路徑,以JavaScript文件(相對於當前文件)一個url屬性的窗口。當窗口的open方法被調用時,關聯的JavaScript文件被評估,創建一個輔助的「執行上下文」,從而創建一個新的範圍。除少數情況外,應該避免使用這種多重活動的JavaScript環境。
這些多個執行上下文會導致問題,因爲沒有範圍有 知名度任何其他的,這意味着上下文之間共享數據 不可能沒有笨拙使用的應用程序級的定製 事件(使用Titanium.App的addEventListener和fireEvent) 。他們可以通過 也導致循環引用和可能的內存泄漏。 也存在 生命週期問題,在此情況下,已經評估給定JavaScript文件的 的代碼變得不清楚。
雖然有一些合理的使用情況這種做法,如 的,每一個新的窗口,需要一個「乾淨的石板」 與全球範圍內沒有依賴性,通常使用URL窗口「的應用程序內的應用程序」不應使用 。
感謝Adam,你如何避免多個JS環境。如果窗口需要打開,它將是..關於該 – 2012-07-31 06:14:36
的任何提示主要的事情是在創建窗口時不使用url屬性。相反,請使用CommonJS模塊化方法,如[this](https://github.com/appcelerator-developer-relations/Template.SingleWindow/blob/master/Resources/ui/handheld/ApplicationWindow.js)。 Android在執行上下文或[重量級窗口](https://wiki.appcelerator.org/display/guides/Android+Module+Development+Guide#AndroidModuleDevelopmentGuide-HeavyWeightandLightweightWindows)上有其他要考慮的事項,這也在帖子中討論過你在問題中鏈接到。 – 2012-07-31 17:47:48
因此,您的意思是使用commonJS方法打開窗口將在相同的上下文(環境)中打開該窗口。 – 2012-08-02 09:32:11
- 1. JavaScript中的隔離執行上下文
- 2. FirebaseCrash在哪個上下文下執行
- 3. JavaScript範圍和執行上下文
- 4. 是什麼Scala的執行上下文和遊戲的執行上下文
- 5. 中斷執行上下文
- 6. setTimeout的執行上下文(JavaScript)
- 7. Go vs JavaScript中執行方法的執行上下文
- 8. windows'program'和一個可執行文件之間的區別
- 9. 在執行兩個函數上下文之間切換
- 10. cl_context&cl之間的區別::上下文
- 11. Python doctest執行上下文
- 12. 執行上下文混亂
- 13. 更改JavaScript腳本執行上下文
- 14. TestNG和JUnit執行之間的區別
- 15. 執行上下文和((此對象))
- 16. JavaScript中的執行上下文和對象
- 17. javascript中的全局和局部變量執行上下文
- 18. '執行'和'以腳本執行'之間的區別
- 19. powershell - 本地執行和遠程執行之間的區別
- 20. 碼頭附加和碼頭執行之間的區別執行
- 21. ContextSwitchDeadlock CLR不執行到上下文的轉換上下文COM
- 22. 從命令行執行dialplan上下文
- 23. 執行上下文驅動的編程
- 24. 主線程的執行上下文
- 25. 從上下文菜單中執行的批處理文件 - 「打開」和「打開」之間的不同行爲
- 26. Objective C中聲明靜態變量在執行上下文內部和外部之間的區別?
- 27. python3和python3m可執行文件之間的區別
- 28. 執行上下文和詞彙環境之間的區別和關係是什麼?
- 29. 變量的作用域和JavaScript執行上下文
- 30. Javascript關閉和執行上下文 - 與代碼的問題
不能明確發表評論,鈦,但在瀏覽器中,每個窗口和框架有其自己的全球執行上下文存在類似的情況(鏈接的文章,說有一個單一的全球範圍內的時候是不正確整個瀏覽器應用程序,它是每個窗口或框架)。子窗口必須在父窗口中引用全局變量作爲「opener.varName」,因爲不合格的「varName」將在子範圍內解析,而不是在父級範圍內解析。 – RobG 2012-07-26 06:51:40