Back

Alloy 的编译过程 (很好的解释了Resources 这个目录的由来) ( alloy compile process)

发布时间: 2015-01-21 22:40:00

refer to:  http://docs.appcelerator.com/titanium/3.0/#!/guide/Alloy_Concepts-section-34636240_AlloyConcepts-CompilationProcess

Alloy的编译过程分成如下几个步骤:

1. 清空之前生成的文件

2. 加载配置文件。 alloy.jmk

3. 复制文件,以 Android平台为例子:

    1. 把所有的文件,复制到 Resources/android/alloy 目录下。

    2. 把 alloy.js ,复制到 Resources 目录

    3. 把配置文件 config.js 复制成为  Resources/android/alloy/CFG.js 

    4. 把assets, lib  目录下的 文件,复制到 Resources 目录下。

4. 编译 model 文件,放到 Resources/android/alloy/modes 目录下

5. 编译 widget文件, 放到 Resources/android/alloy/widget 目录下。

6. 编译 controller (.js) , view(.xml) , style(.tss) 文件,把这三种文件合并成一种 .js controller的文件。 ( <Button/> 变成 Ti.UI.createButton()...  这样的形式) , 放到 Resources/android/alloy/controllers 目录下。

7. Main Application 入口文件: 生成 app.js文件,这个文件 :

    0. 会包含需要的模块(require modules) 

    1. 包含了 alloy.js 的内容。 

    2. 会调用 index.js 这个默认起始文件。

(这里还有一个 hook method,  compile:app.js  , 如果它存在于  jmk配置文件中的话,也会被执行,然后这个生成的app.js文件才会被COPY到  Resources 目录下。 )

8. 代码优化

    生成的JS代码使用 UglifyJS 来优化和压缩。也可以美化它的格式。

    对于某些只针对Android 的代码,在针对IOS做编译时,这段代码会被删掉。

    Titanium/Alloy 内置的第三方包会被copy到 Resources/<platform>alloy 目录下。

(这里还有一个hook method:  jmk 中的post:compile) 

Back