Back

titanium 介绍 (titanium introduction)

发布时间: 2015-01-26 08:27:00

一直以来,大家mobile开发的特点是: 开发速度慢,代码冗余,难以理解和维护。

另外,一些通用的操作,比如发起一个 HTTP GET 请求, 我们认为在技术上基本是一个原理的。

就希望它的代码可以通用。

所以,很多跨平台框架应运而生。 包括: hybrid app, native app。

hybrid 的东西基本不考虑。因为在2010年4月,apple与 adobe 关于flash的碰撞中, apple store下架了所有的hybrid app.

因此,我们考虑的是 native的性能,跨平台的代码。

所以,符合条件的是: Titanium, 以及 Xamarin. 它们都是 跨平台运行,而且都是把代码转换成 native code . 区别在于 Xamarin是微软的产品,使用 C# 变成。 Titanium 使用无比傻瓜的js代码。

下面是一个例子: (更多例子见:https://github.com/appcelerator/hyperloop)

var keyWindow = UIApplication.sharedApplication().keyWindow;

就会被编译成:

UIWindow *window = [UIApplication sharedApplication].keyWindow;

使用 javascript 代码,最大的特点就是简洁。把晦涩难懂的 java/oc 代码变得简单。

Titanium 自从 3.1 就开始使用了 上面的特性。 所以基本上 80~90%的代码可以跨平台重用。

另外, 下面是一个 Hello world的例子:

# 试图层:
<Alloy>
  <Window>
    <ImageView id='imageView' onClick='clickImage' />
    <Label id='l'> Hello world! </Label>
  </Window>
</Alloy>
样式文件:
"window": {
  backgroundColor: "white"
}
 
"#l": {
  bottom: 20,
  width: Ti.UI.SIZE,
  height: Ti.UI.SIZE,
  color: '#999'
}

"#imageView":{
  image:"/images/apple_logo.jpg",
  width:24,
  height:24,
  top:100
}
控制器:
$.index.open();

同时,Titanium还可以:

调用 native 代码 (直接调用ios,  java代码)

调用摄像头,重力感应器,GPS等信息。

只要native code支持,titanium 就支持。

不同平台上的代码不同时,我们就用下面的判断(比如说PUSH):

if Ti.Platform.name == "iPhone OS" && parseInt(Ti.Platform.version.split(".")[0]) < 8 
  Ti.Network.registerForPushNotifications({
    success: deviceTokenSuccess,
    error: deviceTokenError,
    callback: receivePush,
  })

Back