The beautiful, open source framework for developing hybrid mobile apps with HTML 5
@digitaldrummerj
"So you want to build a native app?"
@digitaldrummerj
Why are we still coding for multiple platforms?
@digitaldrummerj
@digitaldrummerj
"Is there an alternative?"
@digitaldrummerj
@digitaldrummerj
@digitaldrummerj
Awesome MVC Framework
Developed by Google and the community
Features:
Live data binding
Two-way binding
Attaching code-behind to DOM element
Directives
Repeating DOM elements
Templates
Dependency Injection
@digitaldrummerj
@digitaldrummerj
@digitaldrummerj
@digitaldrummerj
@digitaldrummerj
iOS 6+
Android 4+
Windows Phone
(planned)
FireFox OS
(planned)
@digitaldrummerj
@digitaldrummerj
@digitaldrummerj
Plus more...ngcordova.com/docs/plugins/
Over 600 MIT licensed font-icons included
@digitaldrummerj
@digitaldrummerj
@digitaldrummerj
@digitaldrummerj
@digitaldrummerj
@digitaldrummerj
@digitaldrummerj
@digitaldrummerj
<div class="list">
<div class="item item-divider">
Candy Bars
</div>
<a class="item" href="#">
Butterfinger
</a>
<a class="item" href="#">
Kit Kat
</a>
...
</div>
@digitaldrummerj
<ion-list>
<ion-item
ng-repeat="item in items"
class="item-thumbnail-left">
<img ng-src="{{ item.pic }}">
<h2>{{ item.name }}</h2>
<p>{{ item.quote }}</p>
</ion-item>
</ion-list>
@digitaldrummerj
<div class="list">
<div collection-repeat="c in contacts" class="item">
<h2>{{ c.name }}</h2>
<p>{{ c.email }}</p>
</div>
</div>
@digitaldrummerj
<ion-tabs class="tabs-icon-only">
<ion-tab title="Home"
icon="ion-star">
<ion-nav-view></ion-nav-view>
</ion-tab>
<ion-tab title="Feedback"
icon="ion-thumbsdown">
<ion-nav-view></ion-nav-view>
</ion-tab>
<ion-tab title="Messages"
icon="ion-chatbubble-working">
<ion-nav-view></ion-nav-view>
</ion-tab>
</ion-tabs>
@digitaldrummerj
<ion-side-menus>
<ion-side-menu-content>
<ion-nav-bar></ion-nav-bar>
<ion-nav-view></ion-nav-view>
</ion-side-menu-content>
<ion-side-menu side="left">
<header class="bar
bar-header bar-positive">
<div class="title">Projects</div>
</header>
<ion-content has-header="true">
<div class="list">
<a href="#/work" class="item">Work</a>
<a href="#/home" class="item">Home</a>
</div>
</ion-content>
</ion-side-menu>
</ion-side-menus>
@digitaldrummerj
<ion-slide-box
on-slide-changed="change(index)">
<ion-slide>
Slide 1
</ion-slide>
<ion-slide>
Slide 2
</ion-slide>
<ion-slide>
Slide 3
</ion-slide>
</ion-slide-box>
@digitaldrummerj
$ionicActionSheet.show({
titleText: 'Modify your album',
buttons: [
{ text: 'Share' },
{ text: 'Move' },
],
destructiveText: 'Delete',
cancelText: 'Cancel',
buttonClicked: function(index) {
console.log('BUTTON CLICKED', index);
return true;
}
});
@digitaldrummerj
<ion-content on-refresh="refreshData()">
<ion-refresher></ion-refresher>
<!-- content -->
</ion-content>
@digitaldrummerj
<ion-nav-bar>
<ion-nav-back-button>
Back
</ion-nav-back-button>
</ion-nav-bar>
<ion-nav-view animation="slide-left-right">
<!-- content -->
</ion-nav-view>
@digitaldrummerj
$ npm install -g cordova ionic
@digitaldrummerj
@digitaldrummerj
@digitaldrummerj
@digitaldrummerj
@digitaldrummerj
What's building an app like?
Create new project
Test on web browser
Add mobile platform (Android or iOS)
Run test on device/emulator
ionic start myApp [blank/tabs/sideMenu]
ionic serve
ionic platform add [android/ios]
ionic [run/emulate] [ android/ios]
@digitaldrummerj
$ ionic start myApp
$ cd myApp
$ ionic upload
@digitaldrummerj
@digitaldrummerj
$ionic start my_app
$cd my_app
$ionic browser add crosswalk
$ionic run android
@digitaldrummerj
Side by Side view of Android and iOS Phone
Supports Live Reload
$ ionic start my_app
$ cd my_app
$ ionic serve --lab
@digitaldrummerj
@digitaldrummerj
Videos, tutorials, and formulas: learn.ionicframework.com
Community Forum: forum.ionicframework.com
Ionic Creator: creator.ionic.io
Blog: ionicframework.com/blog/
GitHub: github.com/driftyco/ionic
Twitter: @ionicframework
Ionic Framework Examples: codepen.io/ionic
Nic Raboy's Blog: https://www.thepolyglotdeveloper.com
Andrew McGivery: http://mcgivery.com/
My blog - http://digitaldrummerj.github.io/
@digitaldrummerj
@digitaldrummerj