3 回答

TA贡献1786条经验 获得超11个赞
Titanium会获取您的Javascript代码,对其进行分析和预处理,然后将其预编译为一组符号,这些符号将根据您的应用程序使用Titanium API进行解析。从这个符号层次结构中,我们可以构建一个符号依赖性矩阵,该矩阵映射到基础的Titanium库符号,以了解您的应用程序特别需要哪些API(以及相关的依赖性,框架等)。我以半一般的方式使用“符号”一词,因为它在语言上有所不同。在iPhone中,该符号映射到一个真正的C符号,该符号最终映射到一个已为ARM / i386体系结构编译的已编译.o文件。对于Java来说,它或多或少是一个.class文件,等等。一旦前端可以理解您的依赖关系矩阵,我们便会调用SDK编译器(例如,用于iPhone的GCC,
因此,一种简单的思考方式是,您的JS代码几乎一对一地编译为本地的代表性符号。仍然有一个解释器以解释模式运行,否则动态代码之类的东西将无法工作。但是,它的速度更快,更紧凑,并且几乎与您可以得到的纯本机映射差不多。
显然,我们仍然有足够的空间来对此进行改进。到目前为止,在我们最新的1.0测试中,它与相同的Objective-C直接代码几乎没有区别(因为在大多数情况下,它已精确地映射到该代码)。从CompSci的角度来看,我们现在可以开始优化人类确实不容易做到的事情-就像今天的GCC编译器一样。

TA贡献2021条经验 获得超8个赞
如果打包简单的充足代码,则会得到〜80MB gzip存档(原始代码〜1kB)。在软件包中-除其他外-您可以找到我的源html和js文件。软件包还附带了很多库(例如ssl)(因为您可以在此框架内对很多东西进行低级访问)。
我认为他们采用您的代码并包装了某种解释器软件和库。就我而言,这就像将我的html和js代码打包到仅显示我的网站的小型浏览器旁边一样。
但是,只要代码可以在每个受支持的系统上以相同的方式工作,那就太好了。
添加回答
举报