Разница между одним и несколькими контекстами выполнения в Javascript (Titanium)

Я действительно запутался в отношении одного и нескольких контекстов выполнения в Javascript. Я ссылался на этот http://developer.appcelerator.com/blog/2010/08/execution-contexts.html хотя получил хороший обзор контекста JS. Но я не знаю, когда хорошо использовать один или несколько контекстов при создании приложений в Titanium.

1 ответ

Решение

Из документации по передовому опыту (выделено мной):

С помощью Titanium Mobile можно создать окно со свойством url, в котором указан путь к файлу Javascript (относительно текущего файла). При вызове метода open окна оценивается связанный файл JavaScript, создавая вторичный "контекст выполнения" и, таким образом, новую область видимости. За исключением редких случаев, этой активной среды JavaScript следует избегать.

Эти множественные контексты выполнения вызывают проблемы, потому что ни одна область не имеет видимости других, что означает, что обмен данными между контекстами невозможен без неуклюжего использования пользовательских событий уровня приложения (с использованием Titanium.App addEventListener и fireEvent). Они также могут привести к циклическим ссылкам и вероятным утечкам памяти. Также существуют проблемы жизненного цикла, когда становится неясно, когда код для данного файла JavaScript был оценен.

Хотя для этого подхода есть несколько разумных вариантов использования, таких как "приложение в приложении", где каждое новое окно требует "чистого листа" без каких-либо зависимостей от глобального контекста, обычно окна с URL-адресами не следует использовать.

Другие вопросы по тегам