The beautiful, open source framework for developing hybrid mobile apps with HTML 5
@digitaldrummerj
@digitaldrummerj
Why are we still coding for multiple platforms?
@digitaldrummerj
@digitaldrummerj
@digitaldrummerj
@digitaldrummerj
@digitaldrummerj
| Year | Device | Processor | RAM | 
|---|---|---|---|
| 2007 | iPhone | 620 MHz | 128 MB | 
| 2010 | iPhone 4 | 1 GHz | 512 MB | 
| 2015 | iPhone 6 | 1.4 GHz dual-core | 1 GB | 
"Hello."
@digitaldrummerj
iOS 6+
Android 4+
@digitaldrummerj
@digitaldrummerj
@digitaldrummerj
@digitaldrummerj
@digitaldrummerj
Over 600 MIT licensed font-icons included
@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
<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
Install NodeJs
Install Git
$npm install -g cordova ionic gulp@digitaldrummerj
@digitaldrummerj
Read the "How To Use this Gist File Section" for instructions
@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 tabs
$ cd myApp
$ ionic upload
$ ionic share [email address]@digitaldrummerj
@digitaldrummerj
Specify version of Chrome to run your Cordova App.
	 
Up to 10x performance increase
	 
App will grow ~10-15 mb in size.
$ionic start my_app
$cd my_app
$ionic browser add crosswalk
$ionic run android@digitaldrummerj
Side by Side
Android and iOS Phone
Supports Live Reload
$ ionic serve --lab@digitaldrummerj
@digitaldrummerj
@digitaldrummerj
@digitaldrummerj
@digitaldrummerj
@digitaldrummerj
Las Vegas Code Camp