|
|
1
47
如前所述,Titanium并不是Web视图的包装器(尽管它准确地解释了PhoneGap的工作原理)。杰夫的回答与这个问题联系在一起,从技术上讲是对钛的工作原理的正确解释,但这里是迄今为止我听到的最好的版本,从 Marshall Culpepper : 事实上,Titanium Mobile在1.0天前使用了WebView(在Android和iOS中)。然而,这不再是真的了,自从我们的1.0版本在2010年3月发布以来就没有了。 从1.0开始,我们在应用程序中提供了两个单独的javascript运行时,我们直接运行javascript代码。 没有 WebVIEW。您的整个应用程序从开始到结束都由JS控制,我们提供了一套全面的本地API来实现这一点。从UI小部件(是的,包括WebView)、核心API(如网络、文件系统、数据库)到操作系统特定的东西(如Android中的JS活动)。在JS运行时前端,我们将在iOS中发布WebKit的JavaScript的分叉版本,并为Android提供Rhino1.7r3 cvs的快照。我们对您的javascript源代码的实际操作依赖于平台,但通常情况下它会像这样分解:
在每一点上,我都可以深入了解更多的细节,但我想让大家了解的是,我们不再使用WebView作为JavaScript引擎。你 可以 但是仍然嵌入WebView,我们提供了一些简单的集成,允许您从嵌入的WebView调用TitaniumAPI。 |
|
|
2
4
Jhainie在你的链接问题中说的是Titanium解释了你的JS代码,并将其转换成与Objective-C几乎相同的代码。
在Web应用程序中,浏览器读取和解释JavaScript并在内部运行关联的本机代码(也许是C++)。例如,浏览器可能会说,“这个脚本正在执行
这意味着您将找不到任何与您最初在脚本中编写的内容类似的内容。必须留给解释器的任何内容仍将被处理和转换,您的符号将更改(例如,调用
这个 通常的 JavaScript的使用是让运行的程序实时解释它。这不是这里发生的事情,这就是为什么你看不到脚本的任何痕迹。
Titanium像其他任何程序(如Web浏览器)一样执行脚本的解释。它可以计算出脚本对TitaniumAPI的依赖性,并设置这些内容。然后,它将您的符号直接映射到(iPhone的情况下)Objective-C中。 程序通常会在脚本中读取(只是一个字符串),对其进行解释,并运行C代码来完成脚本要求的内容。Titanium在动手之前就这样做了,以确定应该运行什么C代码,并提前进行转换。 根据您的代码的解释及其对Titanium API的依赖性,Titanium可以计算出哪些代码可以直接编译,哪些代码不可以编译,以便让它们具有JavaScript的完整动态性。我不知道它如何选择做什么和不编译什么,但是如果你想知道那么多细节的话,你可以查看源代码。 必须仍然被解释的代码(保留为脚本)仍然被转换为符号,从而更有效地映射到本机代码。所以它仍然是一个解释脚本,但这并不意味着它仍然是javascript。这意味着脚本的这些部分仍将比通常的javascript运行得更快。 对于iPhone,可编译的C使用gcc编译以创建本机二进制文件。 现在您有了一个可以在移动设备上运行的应用程序。您的可编译代码已经编译并以闪电般的速度运行,而其余的代码被转换并仍然以接近闪电般的速度运行的更有效的方式进行解释。P 我希望这是合理的,因为这是我所拥有的一切!D |
|
|
Scott Robinson · 钛合金-“全球”监听器 8 年前 |
|
|
Joost · Appcelerator ListView透明行选择? 8 年前 |
|
|
Dieskim · Appcelerator钛安卓闪屏出现两次/闪烁 8 年前 |