The beautiful, open source framework for developing hybrid mobile apps with HTML 5 ionicframework.com
Over 15 years of programming experience Slides: http://slides.com/digitaldrummerj Twitter: @digitaldrummerj Email: digitaldrummerj @ gmail.com GitHub: Blog: https://github.com/digitaldrummerj digitaldrummerj.github.io Justin James Justin James @digitaldrummerj
"So you want to build a native app?" @digitaldrummerj
Why are we still coding for multiple platforms? More Platforms. More Problems. More Platforms. More Problems.
@digitaldrummerj The Downsides of Native The Downsides of Native Proficiency in each platform required Entirely separate code bases Timely & expensive development Diminishing returns @digitaldrummerj
"Is there an alternative?" @digitaldrummerj
Hybrid Apps! Hybrid Apps! HTML 5 that acts like native Web wrapper in native layer Direct access to native APIs Cordova / Phonegap Familiar web development environment Focus on performance @digitaldrummerj
Combines Apache Cordova with AngularJS along with lots of custom Javascript, Html, and CSS3 to create mobile apps that perform like native ones and look beautiful MIT Licensed (free even commercially) Hello Ionic Hello Ionic @digitaldrummerj
AngularJS AngularJS 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
CSS Generated by Sass CSS Generated by Sass Quickly give your app its own look and feel CSS Designed to be easily overridden Either override ionic.css or use Sass Preprocessor Stand-alone CSS (independent of Ionic's Javascript) @digitaldrummerj
Performance Obsessed Performance Obsessed Hardware accelerated animations Minimal DOM Manipulation Zero jQuery (you could still include it if you want) @digitaldrummerj
Native Focused Native Focused Modeled off of native SDKs Built to work with Cordova/Phonegap @digitaldrummerj
Supported Devices Supported Devices @digitaldrummerj iOS 6+ Android 4+ Windows Phone (planned) FireFox OS (planned)
Cordova Cordova Uses web technologies to build mobile apps The apps have access to device hardware from Javascript The web files are hosted in the app Apps are portable to other systems with little to no changes Apps are packaged using platform SDKs Cordova does not include a UI framework http://plugins.cordova.io/ @digitaldrummerj
ngCordova ngCordova collection of 63+ AngularJS extensions built on top of the Cordova API making it easy to build, test, and deploy Cordova mobile apps with AngularJS. http://ngcordova.com/ @digitaldrummerj
ngCordova Plugins ngCordova Plugins Battery Status Bar Code Scanner Calendar Camera Clipboard Contacts @digitaldrummerj Device Motion Flashlight Geo Location SMS Social Sharing TouchID Plus more...ngcordova.com/docs/plugins/
Ionicons Ionicons Over 600 MIT licensed font-icons included ionicons.com @digitaldrummerj
Are people using it? Are people using it? http://showcase.ionicframework.com/
2014 By the Numbers 2014 By the Numbers Ionic started at the end of 2013 top 50 most popular open source projects over 12, 000 stars on GitHub over 320, 000 apps have been created over half a million unique visits to Ionic website over 45, 000 forum post integrated into tools such as WebStorm, JBoss, Heroku templates from Firebase pluralsight course was created by Steve Michelotti #ionic IRC room has ~100 users at any given time several books being written such Ionic in Action from Manning Publishing @digitaldrummerj
The personal stylist in your pocket Pulls in over 2 million products from 100 big name fashion brands Next generation fashion mall for whatever style you require. http://mallzee.com/ Mallzee Mallzee @digitaldrummerj
The fastest way to find new music 5 star rated iPhone Only https://songhop.fm/ Songhop Songhop @digitaldrummerj
Like Uber for commercial trucking Connect to thousands of freight shippers and brokerages across the country https://www.keychainlogistics.com/ Keychain Keychain @digitaldrummerj
Offical app of the ng-europe conference. Used to get the schedule, speakers, venue address, news, chat and more http://ngeurope.org/ ngEurope ngEurope @digitaldrummerj
Fitness app that guides anyone thru 5-60 minute circuits Downloaded over 3 million times Been featured in multiple Health and Fitness lists within both the App Store and Google Play http://sworkit.com/ Sworkit Sworkit @digitaldrummerj
What should I know? What should I know?
Modern Web Skills Modern Web Skills HTML 5 / CSS 3 / Javascript Comfortable with command line tools AngularJS Sass (optional) @digitaldrummerj
Ionic Built-In UI Elements Ionic Built-In UI Elements
List List <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
Complex List Complex List <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> AngularJS Directive Buttons exposed by swiping Reorder Delete @digitaldrummerj
Collection Repeat Collection Repeat <div class="list"> <div collection-repeat="c in contacts" class="item"> <h2>{{ c.name }}</h2> <p>{{ c.email }}</p> </div> </div> Similar to Angular's ng-repeat Scroll through thousands of items Only renders the viewable items Smooth jank-free scrolling Low memory footprint @digitaldrummerj
Tabs Tabs <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> Nested views Each tab has its own nav history @digitaldrummerj
Side Menu Side Menu <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
Slide Box Slide Box <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
Action Sheet Action Sheet $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
Pull to Refresh Pull to Refresh <ion-content on-refresh="refreshData()"> <ion-refresher></ion-refresher> <!-- content --> </ion-content> @digitaldrummerj
Navigation Navigation <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> Shows back button when possible Each tab has its own history stack Works with Android's back button @digitaldrummerj
How to get started? How to get started?
Most demos show this command and move on. However, this assumes that you have lots of other software already installed and configured correctly. For a newbie, that has not used Node.js or done Android/iOS development, the setup can be daunting. Next couple of slides give you links to blog post I wrote with all of the steps need to get started on both Windows and Mac. $ npm install -g cordova ionic Installing Ionic Installing Ionic @digitaldrummerj
Prerequisites Prerequisites git ant Java SDK 7 Android Studio Android SDK (API 19) Node / NPM Cordova Gulp Google Chrome (for debugging) Genymotion (optional) Ruby (if using sass) Sass Ruby Gem @digitaldrummerj
Ionic on Windows Setup Ionic on Windows Setup Manual: Automated using Chocolatey and BoxStarter: Read the "How To Use this Gist File Section" for instructions http://therockncoder.blogspot.com/2014/12/installing-ionic- framework-from-scratch.html digitaldrummerj.github.io/Ionic-Setup-Windows/ @digitaldrummerj
Ionic on a Mac Setup Ionic on a Mac Setup Instruction available at digitaldrummerj.github.io/ionic-setup-osx/ @digitaldrummerj
Is there an easier way? Is there an easier way?
The Ionic Box The Ionic Box Install VirtualBox, its free and available for most platforms Install Vagrant, its free too Install the Ionic Box (Ubuntu Linux and PreReq's) Configuration Steps https://www.virtualbox.org/ https://www.vagrantup.com/ https://github.com/driftyco/ionic-box digitaldrummerj.github.io/ionicbox-notes/ @digitaldrummerj
What's building an app like?
Create ionic app Create ionic app 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
Coding Time Coding Time
Additional Tooling Additional Tooling from Ionic from Ionic
Ionic View Application Ionic View Application View/Share/Test Ionic apps developing across devices even test against OS without a Mac Uses Cordova inAppBrowser plugin to launch your apps in their own separate WebView At the moment, plugin access is restricted to a specific subset of plugins Currently, iOS only but Android version on its way Download from Apple Store: https://itunes.apple.com/us/app/ionic-view/id849930087?mt=8 $ ionic start myApp $ cd myApp $ ionic upload @digitaldrummerj
Ionic Creator Ionic Creator Creator makes it easy to rapidly build Ionic mobile apps. With a drag-and-drop interface and real code exporting. And it's totally free to use. https://creator.ionic.io/ @digitaldrummerj
Ionic and Crosswalk Ionic and Crosswalk Android < 4.4 use Android's no named default browser which is slower and less compliant than Chrome. Specify version of Chrome to run your Android Cordova App. Up to 10x performance increase App will grow ~10-15 mb in size. More Crosswalk Info: Ionic Specifics: crosswalk-project.org/ ionicframework.com/blog/crosswalk-comes-to- ionic/ $ionic start my_app $cd my_app $ionic browser add crosswalk $ionic run android @digitaldrummerj
Simplify testing against multiple platforms Side by Side view of Android and iOS Phone Supports Live Reload Ionic Lab Ionic Lab $ ionic start my_app $ cd my_app $ ionic serve --lab @digitaldrummerj
Summary Summary Makes mobile developer way easier but not easy Build and run native apps by using existing web skills Quickly start a project with starter templates Start a local dev server with LiveReload Lots of good tooling, features, and documentation Not yet 1.0 release, but very close Active and growing developer community @digitaldrummerj
Resources Resources Videos, tutorials, and formulas: Community Forum: Ionic Creator: Blog: GitHub: Twitter: Ionic Framework Examples: Nic Raboy's Blog: Andrew McGivery - My blog - learn.ionicframework.com forum.ionicframework.com creator.ionic.io ionicframework.com/blog/ github.com/driftyco/ionic @ionicframework codepen.io/ionic https://blog.nraboy.com/ http://mcgivery.com/ http://digitaldrummerj.github.io/ @digitaldrummerj
Please rate this talk! http:/ /spkr8.com/t/42121 http:/ /spkr8.com/t/42121 @digitaldrummerj

Ionic - Revolutionizing Hybrid Mobile Application Development

  • 1.
    The beautiful, opensource framework for developing hybrid mobile apps with HTML 5 ionicframework.com
  • 2.
    Over 15 yearsof programming experience Slides: http://slides.com/digitaldrummerj Twitter: @digitaldrummerj Email: digitaldrummerj @ gmail.com GitHub: Blog: https://github.com/digitaldrummerj digitaldrummerj.github.io Justin James Justin James @digitaldrummerj
  • 3.
    "So you wantto build a native app?" @digitaldrummerj
  • 4.
    Why are westill coding for multiple platforms? More Platforms. More Problems. More Platforms. More Problems.
  • 5.
    @digitaldrummerj The Downsides ofNative The Downsides of Native Proficiency in each platform required Entirely separate code bases Timely & expensive development Diminishing returns @digitaldrummerj
  • 6.
    "Is there analternative?" @digitaldrummerj
  • 7.
    Hybrid Apps! Hybrid Apps! HTML5 that acts like native Web wrapper in native layer Direct access to native APIs Cordova / Phonegap Familiar web development environment Focus on performance @digitaldrummerj
  • 8.
    Combines Apache Cordova withAngularJS along with lots of custom Javascript, Html, and CSS3 to create mobile apps that perform like native ones and look beautiful MIT Licensed (free even commercially) Hello Ionic Hello Ionic @digitaldrummerj
  • 9.
    AngularJS AngularJS Awesome MVC Framework Developedby 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
  • 10.
    CSS Generated bySass CSS Generated by Sass Quickly give your app its own look and feel CSS Designed to be easily overridden Either override ionic.css or use Sass Preprocessor Stand-alone CSS (independent of Ionic's Javascript) @digitaldrummerj
  • 11.
    Performance Obsessed Performance Obsessed Hardwareaccelerated animations Minimal DOM Manipulation Zero jQuery (you could still include it if you want) @digitaldrummerj
  • 12.
    Native Focused Native Focused Modeledoff of native SDKs Built to work with Cordova/Phonegap @digitaldrummerj
  • 13.
    Supported Devices Supported Devices @digitaldrummerj iOS6+ Android 4+ Windows Phone (planned) FireFox OS (planned)
  • 14.
    Cordova Cordova Uses web technologiesto build mobile apps The apps have access to device hardware from Javascript The web files are hosted in the app Apps are portable to other systems with little to no changes Apps are packaged using platform SDKs Cordova does not include a UI framework http://plugins.cordova.io/ @digitaldrummerj
  • 15.
    ngCordova ngCordova collection of 63+AngularJS extensions built on top of the Cordova API making it easy to build, test, and deploy Cordova mobile apps with AngularJS. http://ngcordova.com/ @digitaldrummerj
  • 16.
    ngCordova Plugins ngCordova Plugins BatteryStatus Bar Code Scanner Calendar Camera Clipboard Contacts @digitaldrummerj Device Motion Flashlight Geo Location SMS Social Sharing TouchID Plus more...ngcordova.com/docs/plugins/
  • 17.
    Ionicons Ionicons Over 600 MITlicensed font-icons included ionicons.com @digitaldrummerj
  • 18.
    Are people usingit? Are people using it? http://showcase.ionicframework.com/
  • 19.
    2014 By theNumbers 2014 By the Numbers Ionic started at the end of 2013 top 50 most popular open source projects over 12, 000 stars on GitHub over 320, 000 apps have been created over half a million unique visits to Ionic website over 45, 000 forum post integrated into tools such as WebStorm, JBoss, Heroku templates from Firebase pluralsight course was created by Steve Michelotti #ionic IRC room has ~100 users at any given time several books being written such Ionic in Action from Manning Publishing @digitaldrummerj
  • 20.
    The personal stylistin your pocket Pulls in over 2 million products from 100 big name fashion brands Next generation fashion mall for whatever style you require. http://mallzee.com/ Mallzee Mallzee @digitaldrummerj
  • 21.
    The fastest wayto find new music 5 star rated iPhone Only https://songhop.fm/ Songhop Songhop @digitaldrummerj
  • 22.
    Like Uber forcommercial trucking Connect to thousands of freight shippers and brokerages across the country https://www.keychainlogistics.com/ Keychain Keychain @digitaldrummerj
  • 23.
    Offical app ofthe ng-europe conference. Used to get the schedule, speakers, venue address, news, chat and more http://ngeurope.org/ ngEurope ngEurope @digitaldrummerj
  • 24.
    Fitness app thatguides anyone thru 5-60 minute circuits Downloaded over 3 million times Been featured in multiple Health and Fitness lists within both the App Store and Google Play http://sworkit.com/ Sworkit Sworkit @digitaldrummerj
  • 25.
    What should Iknow? What should I know?
  • 26.
    Modern Web Skills ModernWeb Skills HTML 5 / CSS 3 / Javascript Comfortable with command line tools AngularJS Sass (optional) @digitaldrummerj
  • 27.
    Ionic Built-In UIElements Ionic Built-In UI Elements
  • 28.
    List List <div class="list"> <div class="itemitem-divider"> Candy Bars </div> <a class="item" href="#"> Butterfinger </a> <a class="item" href="#"> Kit Kat </a> ... </div> @digitaldrummerj
  • 29.
    Complex List Complex List <ion-list> <ion-item ng-repeat="itemin items" class="item-thumbnail-left"> <img ng-src="{{ item.pic }}"> <h2>{{ item.name }}</h2> <p>{{ item.quote }}</p> </ion-item> </ion-list> AngularJS Directive Buttons exposed by swiping Reorder Delete @digitaldrummerj
  • 30.
    Collection Repeat Collection Repeat <divclass="list"> <div collection-repeat="c in contacts" class="item"> <h2>{{ c.name }}</h2> <p>{{ c.email }}</p> </div> </div> Similar to Angular's ng-repeat Scroll through thousands of items Only renders the viewable items Smooth jank-free scrolling Low memory footprint @digitaldrummerj
  • 31.
    Tabs Tabs <ion-tabs class="tabs-icon-only"> <ion-tab title="Home" icon="ion-star"> <ion-nav-view></ion-nav-view> </ion-tab> <ion-tabtitle="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> Nested views Each tab has its own nav history @digitaldrummerj
  • 32.
    Side Menu Side Menu <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-menuside="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
  • 33.
    Slide Box Slide Box <ion-slide-box on-slide-changed="change(index)"> <ion-slide> Slide1 </ion-slide> <ion-slide> Slide 2 </ion-slide> <ion-slide> Slide 3 </ion-slide> </ion-slide-box> @digitaldrummerj
  • 34.
    Action Sheet Action Sheet $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
  • 35.
    Pull to Refresh Pullto Refresh <ion-content on-refresh="refreshData()"> <ion-refresher></ion-refresher> <!-- content --> </ion-content> @digitaldrummerj
  • 36.
    Navigation Navigation <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> Shows back button when possible Each tab has its own history stack Works with Android's back button @digitaldrummerj
  • 37.
    How to getstarted? How to get started?
  • 38.
    Most demos showthis command and move on. However, this assumes that you have lots of other software already installed and configured correctly. For a newbie, that has not used Node.js or done Android/iOS development, the setup can be daunting. Next couple of slides give you links to blog post I wrote with all of the steps need to get started on both Windows and Mac. $ npm install -g cordova ionic Installing Ionic Installing Ionic @digitaldrummerj
  • 39.
    Prerequisites Prerequisites git ant Java SDK 7 AndroidStudio Android SDK (API 19) Node / NPM Cordova Gulp Google Chrome (for debugging) Genymotion (optional) Ruby (if using sass) Sass Ruby Gem @digitaldrummerj
  • 40.
    Ionic on WindowsSetup Ionic on Windows Setup Manual: Automated using Chocolatey and BoxStarter: Read the "How To Use this Gist File Section" for instructions http://therockncoder.blogspot.com/2014/12/installing-ionic- framework-from-scratch.html digitaldrummerj.github.io/Ionic-Setup-Windows/ @digitaldrummerj
  • 41.
    Ionic on aMac Setup Ionic on a Mac Setup Instruction available at digitaldrummerj.github.io/ionic-setup-osx/ @digitaldrummerj
  • 42.
    Is there aneasier way? Is there an easier way?
  • 43.
    The Ionic Box TheIonic Box Install VirtualBox, its free and available for most platforms Install Vagrant, its free too Install the Ionic Box (Ubuntu Linux and PreReq's) Configuration Steps https://www.virtualbox.org/ https://www.vagrantup.com/ https://github.com/driftyco/ionic-box digitaldrummerj.github.io/ionicbox-notes/ @digitaldrummerj
  • 44.
  • 45.
    Create ionic app Createionic app 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
  • 46.
  • 47.
  • 48.
    Ionic View Application IonicView Application View/Share/Test Ionic apps developing across devices even test against OS without a Mac Uses Cordova inAppBrowser plugin to launch your apps in their own separate WebView At the moment, plugin access is restricted to a specific subset of plugins Currently, iOS only but Android version on its way Download from Apple Store: https://itunes.apple.com/us/app/ionic-view/id849930087?mt=8 $ ionic start myApp $ cd myApp $ ionic upload @digitaldrummerj
  • 49.
    Ionic Creator Ionic Creator Creatormakes it easy to rapidly build Ionic mobile apps. With a drag-and-drop interface and real code exporting. And it's totally free to use. https://creator.ionic.io/ @digitaldrummerj
  • 50.
    Ionic and Crosswalk Ionicand Crosswalk Android < 4.4 use Android's no named default browser which is slower and less compliant than Chrome. Specify version of Chrome to run your Android Cordova App. Up to 10x performance increase App will grow ~10-15 mb in size. More Crosswalk Info: Ionic Specifics: crosswalk-project.org/ ionicframework.com/blog/crosswalk-comes-to- ionic/ $ionic start my_app $cd my_app $ionic browser add crosswalk $ionic run android @digitaldrummerj
  • 51.
    Simplify testing against multiple platforms Sideby Side view of Android and iOS Phone Supports Live Reload Ionic Lab Ionic Lab $ ionic start my_app $ cd my_app $ ionic serve --lab @digitaldrummerj
  • 52.
    Summary Summary Makes mobile developerway easier but not easy Build and run native apps by using existing web skills Quickly start a project with starter templates Start a local dev server with LiveReload Lots of good tooling, features, and documentation Not yet 1.0 release, but very close Active and growing developer community @digitaldrummerj
  • 53.
    Resources Resources Videos, tutorials, andformulas: Community Forum: Ionic Creator: Blog: GitHub: Twitter: Ionic Framework Examples: Nic Raboy's Blog: Andrew McGivery - My blog - learn.ionicframework.com forum.ionicframework.com creator.ionic.io ionicframework.com/blog/ github.com/driftyco/ionic @ionicframework codepen.io/ionic https://blog.nraboy.com/ http://mcgivery.com/ http://digitaldrummerj.github.io/ @digitaldrummerj
  • 54.
    Please rate thistalk! http:/ /spkr8.com/t/42121 http:/ /spkr8.com/t/42121 @digitaldrummerj