titanium 介绍 (titanium introduction)
访问量: 2775
一直以来,大家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, })