Что говорит jhaynie в вашем связанном вопросе, так это то, что Titanium интерпретирует ваш код JS и преобразует его в нечто, почти идентичное Objective-C.
В веб-приложении браузер читает и интерпретирует ваш Javascriptи запускает связанный нативный код (возможно, C ++) внутри.Например, браузер может сказать: «Этот скрипт выполняет getElementById()
, поэтому для этого я буду запускать свои собственные методы C ++».Что делает Titanium, так это заранее выясняет, что JS-> C ++ (или в данном случае JS-> Objective-C), и компилирует это.Он по-прежнему оставляет интерпретатор открытым, где это необходимо для вашего динамического кода, но он преобразует и компилирует все, что может.
Это означает, что вы не найдете ничего похожего на то, что вы изначально написали в своем скрипте.Все, что нужно оставить переводчику, все еще обрабатывается и преобразуется, и ваши символы изменятся (например, вызов myTestFunction()
может быть преобразован в A()
или 10001101001101
: P).
Обычное использование Javascript заключается в том, чтобы интерпретировать его в реальном времени с помощью работающей программы.Это не то, что здесь происходит, и поэтому вы не можете видеть никаких следов вашего скрипта.
Javascript предварительно обработан Titanium выполняет интерпретацию вашего скрипта так же, как любая другая программа (например, веб-браузер).Он выясняет, какие зависимости ваш скрипт имеет от Titanium API, и устанавливает все это.Затем он отображает ваши символы непосредственно в (в случае iPhone) Objective-C.Программа обычно читает ваш скрипт (который представляет собой просто String), интерпретирует его и запускает код на C, чтобы выполнить то, о чем просил ваш скрипт.Titanium делает это заранее, чтобы выяснить, какой код C должен быть запущен, и выполняет преобразование заранее.
Код компилируется, где это возможно Основываясь на интерпретации вашего кода и его зависимостях от API-интерфейса Titanium, Titanium выясняет, какой код может быть скомпилирован напрямую, а какой нет, чтобы обеспечить полную динамику Javascript.Я не знаю, как он выбирает, что компилируется, а что нет, но вы можете проверить исходный код, если хотите узнать больше подробностей.Код, который все еще должен быть интерпретирован (оставлен как скрипт), по-прежнему преобразуется в символы, что приводит к более эффективному отображению на собственный код.Так что это все еще интерпретируемый скрипт, но это не значит, что это все еще Javascript.Это означает, что эти части вашего сценария будут работать быстрее, чем обычный Javascript.Для iPhone компилируемый C компилируется с GCC для создания собственного двоичного файла.
У вас есть работающее приложение *Теперь у вас есть приложение, которое вы можете запустить на своем мобильном устройстве.Ваш скомпилированный код был скомпилирован и работает с молниеносной скоростью, в то время как остальная часть преобразована и все еще интерпретируется более эффективным способом, который работает с почти молниеносной скоростью.: P
Надеюсь, теперь это имеет смысл, потому что это все, что у меня есть!: D