SlideShare a Scribd company logo
1 of 35
Download to read offline
Titanium
Develop Native Mobile Apps with JavaScript
Fokke Zandbergen @FokkeZB
Appcelerator
Developer
Evangelist
@FokkeZB
NL
Freelance
App
Developer
Try
Share
Improve
gitT.io
TiCons
WOW! I can use
my skills
to build
truly native
 apps!
NO!
Wrapped HTML Apps
polling
JSON
“localhost”
XMLHttpRequest

system
APIs
!
“The Bottleneck”
It just feels “sticky”
iOS TabGroup?
Android Drawer?
Uh?!

JS 2 Native Apps
JSCore/V8
APIs
system
APIs
UIKit etc.

V8
APIs
system
APIs
We’re not alone
var text = Ti.UI.createLabel({
text: "Hello, world!",
font: {
fontSize: 60
},
color: 'red'
});
var window = Ti.UI.createWindow();
window.add(text);
window.open();
var text = Ti.UI.createLabel({
text: 'Hello, world!',
font: {
fontSize: 60
},
color: 'red',
focusable: true
});
var window = Ti.UI.createWindow();
if (Ti.Platform.name === 'android') {
window.add(Ti.UI.Android.createProgressIndicator());
}
window.add(text);
window.open();
Platform-specific code
“The Bridge”
var blur = require('bencoding.blur');
var view = blur.createBasicBlurView({
blurRadius: 5,
image: '/images/background.png'
});
var window = Ti.UI.createWindow();
window.add(view);
window.open();
Modules

“The Boat”

var Hyperloop = require("hyperloop");
var TiApp = require("TiApp");
var UIViewController = require("UIViewController");
var UILabel = require("UILabel");
var UIColor = require("UIColor");
var UIScreen = require("UIScreen");
var CGRect = require("CGRect");
var NSTextAlignment = require("NSTextAlignment");
var label = UILabel.initWithFrame(CGRect.Make(0, 0,
UIScreen.mainScreen().bounds.width,
UIScreen.mainScreen().bounds.height
));
label.setText('Hello World!');
label.setTextColor(UIColor.redColor());
var viewController = UIViewController.init();
viewController.view.setBackgroundColor(UIColor.whiteColor());
viewController.view.addSubview(label);
TiApp.app().showModalController(viewController, false);
Hyperloop for iOS

var Hyperloop = require("hyperloop");
var TiApp = require("TiApp");
var UIViewController = require("UIViewController");
var UILabel = require("UILabel");
var UIColor = require("UIColor");
var UIScreen = require("UIScreen");
var CGRect = require("CGRect");
var NSTextAlignment = require("NSTextAlignment");
var label = UILabel.initWithFrame(CGRect.Make(0, 0,
UIScreen.mainScreen().bounds.width,
UIScreen.mainScreen().bounds.height
));
label.setText('Hello World!');
label.setTextColor(UIColor.redColor());
var viewController = UIViewController.init();
viewController.view.setBackgroundColor(UIColor.whiteColor());
viewController.view.addSubview(label);
TiApp.app().showModalController(viewController, false);
Hyperloop for iOS
var text = Ti.UI.createLabel({
text: "Hello, world!",
font: {
fontSize: 60
},
color: 'red'
});
var window = Ti.UI.createWindow();
window.add(text);
window.open();
var Window = require('Windows.UI.Xaml.Window'),
TextBlock = require('Windows.UI.Xaml.Controls.TextBlock'),
Colors = require('Windows.UI.Colors'),
SolidColorBrush = require('Windows.UI.Xaml.Media.SolidColorBrush');
var text = new TextBlock();
text.Text = 'Hello, world!';
text.FontSize = 50;
text.Foreground = new SolidColorBrush(Colors.Red);
var window = Window.Current,
window.Content = text;
window.Activate();
Hyperloop for Windows
var TextView = require('android.widget.TextView'),
Activity = require('android.app.Activity'),
Color = require('android.graphics.Color'),
RelativeLayout = require('android.widget.RelativeLayout'),
Gravity = require('android.view.Gravity'),
TypedValue = require('android.util.TypedValue');
var text = new TextView(activity);
text.setText("Hello World!");
text.setTextColor(Color.RED);
text.setTextSize(TypedValue.COMPLEX_UNIT_PX, 60);
var layout = new RelativeLayout(activity);
layout.setGravity(Gravity.CENTER);
layout.setBackgroundColor(Color.BLACK);
layout.addView(text);
var activity = new Activity(Ti.Android.currentActivity);
activity.setContentView(layout);
Hyperloop for Android
Spaghetti code
var text = Ti.UI.createLabel({
text: "Hello, world!",
font: {
fontSize: 60
},
color: 'red'
});
var window = Ti.UI.createWindow();
window.add(text);
window.open();
<Alloy>
<Window>
<Label>Hello, world!</Label>
</Window>
</Alloy>
'Label': {
font: {
fontSize: 60
},
color: 'red'
}
$.index.open();
index.xml
index.tss
index.js
<Alloy>
<Window>
<Label platform="android">Hello, world!</Label>
</Window>
</Alloy>
'Window[formFactor=tablet]': {
backgroundColor: 'green'
}
if (ENV_TEST) {
$.index.open();
}
Conditional Code
Widgets
<Alloy>
<Window>
<Widget src="hello" />
</Window>
</Alloy>
<Alloy>
<Label>Hello, world!</Label>
</Alloy>
index.xml
widgets/hello
Let’s play..
Apps alone won’t cut it
You need Triple
You need Triple
appcelerator.com
✓ Native UI… NO HTML
✓ Cross Platform JS API
✓ Direct API Access
✓ Alloy MVC framework
✓ Modules & Widgets
✓ You need Tripple
I can use
my skills
to build
truly native
 apps!
WOW!
Thank you
Thanks to Ryan McGuire for the photo’s @bellsdesign
Fokke Zandbergen @FokkeZB

More Related Content

Viewers also liked

Midlands State University Law Review Vol 1- October 2014
Midlands State University Law Review Vol 1- October  2014Midlands State University Law Review Vol 1- October  2014
Midlands State University Law Review Vol 1- October 2014Dr. Ignatious Nzero
 
Appcelerator OSS & Platform
Appcelerator OSS & PlatformAppcelerator OSS & Platform
Appcelerator OSS & PlatformFokke Zandbergen
 
大型App面臨的挑戰
大型App面臨的挑戰大型App面臨的挑戰
大型App面臨的挑戰Chih-Chung Lee
 
Cross-Platform Native Apps with JavaScript
Cross-Platform Native Apps with JavaScriptCross-Platform Native Apps with JavaScript
Cross-Platform Native Apps with JavaScriptFokke Zandbergen
 
The Diary of Samuel Pepys, by Phil Gyford, at Skillswap Brighton
The Diary of Samuel Pepys, by Phil Gyford, at Skillswap BrightonThe Diary of Samuel Pepys, by Phil Gyford, at Skillswap Brighton
The Diary of Samuel Pepys, by Phil Gyford, at Skillswap BrightonPhil Gyford
 
The great fire of london
The great fire of londonThe great fire of london
The great fire of londonalnero
 
10 f2015 Great London Fire 1666
10 f2015 Great London Fire 166610 f2015 Great London Fire 1666
10 f2015 Great London Fire 1666Robert Ehrlich
 
2016 05 06 ecoparque 4ºep
2016 05 06 ecoparque 4ºep2016 05 06 ecoparque 4ºep
2016 05 06 ecoparque 4ºepMicaelaSantander
 

Viewers also liked (11)

Midlands State University Law Review Vol 1- October 2014
Midlands State University Law Review Vol 1- October  2014Midlands State University Law Review Vol 1- October  2014
Midlands State University Law Review Vol 1- October 2014
 
Quiz circulatory system
Quiz circulatory systemQuiz circulatory system
Quiz circulatory system
 
голодомор
голодоморголодомор
голодомор
 
Appcelerator OSS & Platform
Appcelerator OSS & PlatformAppcelerator OSS & Platform
Appcelerator OSS & Platform
 
大型App面臨的挑戰
大型App面臨的挑戰大型App面臨的挑戰
大型App面臨的挑戰
 
Cross-Platform Native Apps with JavaScript
Cross-Platform Native Apps with JavaScriptCross-Platform Native Apps with JavaScript
Cross-Platform Native Apps with JavaScript
 
The Diary of Samuel Pepys, by Phil Gyford, at Skillswap Brighton
The Diary of Samuel Pepys, by Phil Gyford, at Skillswap BrightonThe Diary of Samuel Pepys, by Phil Gyford, at Skillswap Brighton
The Diary of Samuel Pepys, by Phil Gyford, at Skillswap Brighton
 
Titanium Alloy Tutorial
Titanium Alloy TutorialTitanium Alloy Tutorial
Titanium Alloy Tutorial
 
The great fire of london
The great fire of londonThe great fire of london
The great fire of london
 
10 f2015 Great London Fire 1666
10 f2015 Great London Fire 166610 f2015 Great London Fire 1666
10 f2015 Great London Fire 1666
 
2016 05 06 ecoparque 4ºep
2016 05 06 ecoparque 4ºep2016 05 06 ecoparque 4ºep
2016 05 06 ecoparque 4ºep
 

Similar to Titanium: Develop Native Mobile Apps with JavaScript

Jacob Waller: Webifying Titanium Development
Jacob Waller: Webifying Titanium DevelopmentJacob Waller: Webifying Titanium Development
Jacob Waller: Webifying Titanium DevelopmentAxway Appcelerator
 
Students Stars
Students StarsStudents Stars
Students StarsOthaimeen
 
MOPCON 2014 - Best software architecture in app development
MOPCON 2014 - Best software architecture in app developmentMOPCON 2014 - Best software architecture in app development
MOPCON 2014 - Best software architecture in app developmentanistar sung
 
Mozilla Web Apps - Super-VanJS
Mozilla Web Apps - Super-VanJSMozilla Web Apps - Super-VanJS
Mozilla Web Apps - Super-VanJSRobert Nyman
 
Angular 2 and NativeScript
Angular 2 and NativeScriptAngular 2 and NativeScript
Angular 2 and NativeScriptJen Looper
 
NativeScript: Cross-Platform Mobile Apps with JavaScript and Angular
NativeScript: Cross-Platform Mobile Apps with JavaScript and AngularNativeScript: Cross-Platform Mobile Apps with JavaScript and Angular
NativeScript: Cross-Platform Mobile Apps with JavaScript and AngularTodd Anglin
 
Google I/O 2011, Android Honeycomb Highlights
Google I/O 2011, Android Honeycomb HighlightsGoogle I/O 2011, Android Honeycomb Highlights
Google I/O 2011, Android Honeycomb HighlightsRomain Guy
 
Introduction to Javascript programming
Introduction to Javascript programmingIntroduction to Javascript programming
Introduction to Javascript programmingFulvio Corno
 
RubyMotion and ProMotion - Ams.rb Talk
RubyMotion and ProMotion - Ams.rb TalkRubyMotion and ProMotion - Ams.rb Talk
RubyMotion and ProMotion - Ams.rb TalkWouter de Vos
 
Titanium Workshop - [Sainté Mobile Days]
Titanium Workshop - [Sainté Mobile Days]Titanium Workshop - [Sainté Mobile Days]
Titanium Workshop - [Sainté Mobile Days]Christian Brousseau
 
Build your wp8 app today
Build your wp8 app todayBuild your wp8 app today
Build your wp8 app todayjalpf
 
JavaScript shell scripting
JavaScript shell scriptingJavaScript shell scripting
JavaScript shell scriptingStoyan Stefanov
 
Flutter festival - building ui's with flutter
Flutter festival - building ui's with flutterFlutter festival - building ui's with flutter
Flutter festival - building ui's with flutterApoorv Pandey
 
Lekhoniya Documentation.pdf
Lekhoniya Documentation.pdfLekhoniya Documentation.pdf
Lekhoniya Documentation.pdfSubhamMandal40
 
NativeScript and Angular
NativeScript and AngularNativeScript and Angular
NativeScript and AngularJen Looper
 
CodeStock :: Introduction To MacRuby and HotCocoa
CodeStock :: Introduction To MacRuby and HotCocoaCodeStock :: Introduction To MacRuby and HotCocoa
CodeStock :: Introduction To MacRuby and HotCocoaDoc Norton
 
Workshop 24: React Native Introduction
Workshop 24: React Native IntroductionWorkshop 24: React Native Introduction
Workshop 24: React Native IntroductionVisual Engineering
 

Similar to Titanium: Develop Native Mobile Apps with JavaScript (20)

Jacob Waller: Webifying Titanium Development
Jacob Waller: Webifying Titanium DevelopmentJacob Waller: Webifying Titanium Development
Jacob Waller: Webifying Titanium Development
 
Students Stars
Students StarsStudents Stars
Students Stars
 
MOPCON 2014 - Best software architecture in app development
MOPCON 2014 - Best software architecture in app developmentMOPCON 2014 - Best software architecture in app development
MOPCON 2014 - Best software architecture in app development
 
Mozilla Web Apps - Super-VanJS
Mozilla Web Apps - Super-VanJSMozilla Web Apps - Super-VanJS
Mozilla Web Apps - Super-VanJS
 
Angular 2 and NativeScript
Angular 2 and NativeScriptAngular 2 and NativeScript
Angular 2 and NativeScript
 
NativeScript: Cross-Platform Mobile Apps with JavaScript and Angular
NativeScript: Cross-Platform Mobile Apps with JavaScript and AngularNativeScript: Cross-Platform Mobile Apps with JavaScript and Angular
NativeScript: Cross-Platform Mobile Apps with JavaScript and Angular
 
Google I/O 2011, Android Honeycomb Highlights
Google I/O 2011, Android Honeycomb HighlightsGoogle I/O 2011, Android Honeycomb Highlights
Google I/O 2011, Android Honeycomb Highlights
 
Mix-IT 2015
Mix-IT 2015Mix-IT 2015
Mix-IT 2015
 
Introduction to Javascript programming
Introduction to Javascript programmingIntroduction to Javascript programming
Introduction to Javascript programming
 
RubyMotion and ProMotion - Ams.rb Talk
RubyMotion and ProMotion - Ams.rb TalkRubyMotion and ProMotion - Ams.rb Talk
RubyMotion and ProMotion - Ams.rb Talk
 
Titanium Workshop - [Sainté Mobile Days]
Titanium Workshop - [Sainté Mobile Days]Titanium Workshop - [Sainté Mobile Days]
Titanium Workshop - [Sainté Mobile Days]
 
Build your wp8 app today
Build your wp8 app todayBuild your wp8 app today
Build your wp8 app today
 
Appcelerator Alloy MVC
Appcelerator Alloy MVCAppcelerator Alloy MVC
Appcelerator Alloy MVC
 
JavaScript shell scripting
JavaScript shell scriptingJavaScript shell scripting
JavaScript shell scripting
 
Flutter festival - building ui's with flutter
Flutter festival - building ui's with flutterFlutter festival - building ui's with flutter
Flutter festival - building ui's with flutter
 
Lekhoniya Documentation.pdf
Lekhoniya Documentation.pdfLekhoniya Documentation.pdf
Lekhoniya Documentation.pdf
 
Writing a slack chatbot mxlos
Writing a slack chatbot mxlosWriting a slack chatbot mxlos
Writing a slack chatbot mxlos
 
NativeScript and Angular
NativeScript and AngularNativeScript and Angular
NativeScript and Angular
 
CodeStock :: Introduction To MacRuby and HotCocoa
CodeStock :: Introduction To MacRuby and HotCocoaCodeStock :: Introduction To MacRuby and HotCocoa
CodeStock :: Introduction To MacRuby and HotCocoa
 
Workshop 24: React Native Introduction
Workshop 24: React Native IntroductionWorkshop 24: React Native Introduction
Workshop 24: React Native Introduction
 

More from Fokke Zandbergen

Building the (Support) Robot at Zapier
Building the (Support) Robot at ZapierBuilding the (Support) Robot at Zapier
Building the (Support) Robot at ZapierFokke Zandbergen
 
Lessons from helping developers integrate 1,000 APIs with Zapier
Lessons from helping developers integrate 1,000 APIs with ZapierLessons from helping developers integrate 1,000 APIs with Zapier
Lessons from helping developers integrate 1,000 APIs with ZapierFokke Zandbergen
 
We are all Remote Advocates
We are all Remote AdvocatesWe are all Remote Advocates
We are all Remote AdvocatesFokke Zandbergen
 
Getting Started with Titanium & Alloy
Getting Started with Titanium & AlloyGetting Started with Titanium & Alloy
Getting Started with Titanium & AlloyFokke Zandbergen
 
Platform 4.0 Meetup Launch Event
Platform 4.0 Meetup Launch EventPlatform 4.0 Meetup Launch Event
Platform 4.0 Meetup Launch EventFokke Zandbergen
 
The Ultimate Titanium CLI Toolchain
The Ultimate Titanium CLI ToolchainThe Ultimate Titanium CLI Toolchain
The Ultimate Titanium CLI ToolchainFokke Zandbergen
 
Getting ready for iOS 8 & iPhone 6
Getting ready for iOS 8 & iPhone 6Getting ready for iOS 8 & iPhone 6
Getting ready for iOS 8 & iPhone 6Fokke Zandbergen
 
Titanium Community Toolkit Showcase
Titanium Community Toolkit ShowcaseTitanium Community Toolkit Showcase
Titanium Community Toolkit ShowcaseFokke Zandbergen
 
5 app alternatieven #AIB2013
5 app alternatieven #AIB20135 app alternatieven #AIB2013
5 app alternatieven #AIB2013Fokke Zandbergen
 
Apps voor kerken #Kerk2013
Apps voor kerken #Kerk2013Apps voor kerken #Kerk2013
Apps voor kerken #Kerk2013Fokke Zandbergen
 
Alloy Tips & Tricks #TiLon
Alloy Tips & Tricks #TiLonAlloy Tips & Tricks #TiLon
Alloy Tips & Tricks #TiLonFokke Zandbergen
 

More from Fokke Zandbergen (17)

Building the (Support) Robot at Zapier
Building the (Support) Robot at ZapierBuilding the (Support) Robot at Zapier
Building the (Support) Robot at Zapier
 
Lessons from helping developers integrate 1,000 APIs with Zapier
Lessons from helping developers integrate 1,000 APIs with ZapierLessons from helping developers integrate 1,000 APIs with Zapier
Lessons from helping developers integrate 1,000 APIs with Zapier
 
We are all Remote Advocates
We are all Remote AdvocatesWe are all Remote Advocates
We are all Remote Advocates
 
Getting Started with Titanium & Alloy
Getting Started with Titanium & AlloyGetting Started with Titanium & Alloy
Getting Started with Titanium & Alloy
 
Platform 4.0 Meetup Launch Event
Platform 4.0 Meetup Launch EventPlatform 4.0 Meetup Launch Event
Platform 4.0 Meetup Launch Event
 
The Ultimate Titanium CLI Toolchain
The Ultimate Titanium CLI ToolchainThe Ultimate Titanium CLI Toolchain
The Ultimate Titanium CLI Toolchain
 
Getting ready for iOS 8 & iPhone 6
Getting ready for iOS 8 & iPhone 6Getting ready for iOS 8 & iPhone 6
Getting ready for iOS 8 & iPhone 6
 
Titanium Community Toolkit Showcase
Titanium Community Toolkit ShowcaseTitanium Community Toolkit Showcase
Titanium Community Toolkit Showcase
 
5 app alternatieven #AIB2013
5 app alternatieven #AIB20135 app alternatieven #AIB2013
5 app alternatieven #AIB2013
 
Apps voor kerken #Kerk2013
Apps voor kerken #Kerk2013Apps voor kerken #Kerk2013
Apps voor kerken #Kerk2013
 
TiNy #TiAppCamp
TiNy #TiAppCampTiNy #TiAppCamp
TiNy #TiAppCamp
 
Internetmarketing
InternetmarketingInternetmarketing
Internetmarketing
 
Alloy Tips & Tricks #TiLon
Alloy Tips & Tricks #TiLonAlloy Tips & Tricks #TiLon
Alloy Tips & Tricks #TiLon
 
Alloy #DMC13
Alloy #DMC13Alloy #DMC13
Alloy #DMC13
 
Titanium #MDS13
Titanium #MDS13Titanium #MDS13
Titanium #MDS13
 
SEO
SEOSEO
SEO
 
Alloy
AlloyAlloy
Alloy
 

Titanium: Develop Native Mobile Apps with JavaScript

  • 1. Titanium Develop Native Mobile Apps with JavaScript Fokke Zandbergen @FokkeZB
  • 3. WOW! I can use my skills to build truly native  apps!
  • 4. NO!
  • 5.
  • 8. It just feels “sticky”
  • 10.  JS 2 Native Apps JSCore/V8 APIs system APIs UIKit etc.
  • 12. var text = Ti.UI.createLabel({ text: "Hello, world!", font: { fontSize: 60 }, color: 'red' }); var window = Ti.UI.createWindow(); window.add(text); window.open();
  • 13. var text = Ti.UI.createLabel({ text: 'Hello, world!', font: { fontSize: 60 }, color: 'red', focusable: true }); var window = Ti.UI.createWindow(); if (Ti.Platform.name === 'android') { window.add(Ti.UI.Android.createProgressIndicator()); } window.add(text); window.open(); Platform-specific code
  • 15. var blur = require('bencoding.blur'); var view = blur.createBasicBlurView({ blurRadius: 5, image: '/images/background.png' }); var window = Ti.UI.createWindow(); window.add(view); window.open(); Modules 
  • 17.  var Hyperloop = require("hyperloop"); var TiApp = require("TiApp"); var UIViewController = require("UIViewController"); var UILabel = require("UILabel"); var UIColor = require("UIColor"); var UIScreen = require("UIScreen"); var CGRect = require("CGRect"); var NSTextAlignment = require("NSTextAlignment"); var label = UILabel.initWithFrame(CGRect.Make(0, 0, UIScreen.mainScreen().bounds.width, UIScreen.mainScreen().bounds.height )); label.setText('Hello World!'); label.setTextColor(UIColor.redColor()); var viewController = UIViewController.init(); viewController.view.setBackgroundColor(UIColor.whiteColor()); viewController.view.addSubview(label); TiApp.app().showModalController(viewController, false); Hyperloop for iOS
  • 18.  var Hyperloop = require("hyperloop"); var TiApp = require("TiApp"); var UIViewController = require("UIViewController"); var UILabel = require("UILabel"); var UIColor = require("UIColor"); var UIScreen = require("UIScreen"); var CGRect = require("CGRect"); var NSTextAlignment = require("NSTextAlignment"); var label = UILabel.initWithFrame(CGRect.Make(0, 0, UIScreen.mainScreen().bounds.width, UIScreen.mainScreen().bounds.height )); label.setText('Hello World!'); label.setTextColor(UIColor.redColor()); var viewController = UIViewController.init(); viewController.view.setBackgroundColor(UIColor.whiteColor()); viewController.view.addSubview(label); TiApp.app().showModalController(viewController, false); Hyperloop for iOS
  • 19. var text = Ti.UI.createLabel({ text: "Hello, world!", font: { fontSize: 60 }, color: 'red' }); var window = Ti.UI.createWindow(); window.add(text); window.open();
  • 20. var Window = require('Windows.UI.Xaml.Window'), TextBlock = require('Windows.UI.Xaml.Controls.TextBlock'), Colors = require('Windows.UI.Colors'), SolidColorBrush = require('Windows.UI.Xaml.Media.SolidColorBrush'); var text = new TextBlock(); text.Text = 'Hello, world!'; text.FontSize = 50; text.Foreground = new SolidColorBrush(Colors.Red); var window = Window.Current, window.Content = text; window.Activate(); Hyperloop for Windows
  • 21. var TextView = require('android.widget.TextView'), Activity = require('android.app.Activity'), Color = require('android.graphics.Color'), RelativeLayout = require('android.widget.RelativeLayout'), Gravity = require('android.view.Gravity'), TypedValue = require('android.util.TypedValue'); var text = new TextView(activity); text.setText("Hello World!"); text.setTextColor(Color.RED); text.setTextSize(TypedValue.COMPLEX_UNIT_PX, 60); var layout = new RelativeLayout(activity); layout.setGravity(Gravity.CENTER); layout.setBackgroundColor(Color.BLACK); layout.addView(text); var activity = new Activity(Ti.Android.currentActivity); activity.setContentView(layout); Hyperloop for Android
  • 23.
  • 24. var text = Ti.UI.createLabel({ text: "Hello, world!", font: { fontSize: 60 }, color: 'red' }); var window = Ti.UI.createWindow(); window.add(text); window.open();
  • 25. <Alloy> <Window> <Label>Hello, world!</Label> </Window> </Alloy> 'Label': { font: { fontSize: 60 }, color: 'red' } $.index.open(); index.xml index.tss index.js
  • 26.
  • 27. <Alloy> <Window> <Label platform="android">Hello, world!</Label> </Window> </Alloy> 'Window[formFactor=tablet]': { backgroundColor: 'green' } if (ENV_TEST) { $.index.open(); } Conditional Code
  • 33. ✓ Native UI… NO HTML ✓ Cross Platform JS API ✓ Direct API Access ✓ Alloy MVC framework ✓ Modules & Widgets ✓ You need Tripple
  • 34. I can use my skills to build truly native  apps! WOW!
  • 35. Thank you Thanks to Ryan McGuire for the photo’s @bellsdesign Fokke Zandbergen @FokkeZB