ionicchariotsolutions.com/.../04/mikehartington_ete2015_ionic.pdf · 2017-08-23 · ionic the...

49

Upload: others

Post on 18-Apr-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: IONICchariotsolutions.com/.../04/MikeHartington_ETE2015_Ionic.pdf · 2017-08-23 · IONIC The Missing SDK For Hybrid Apps Mike Hartington | @mhartington. Mike Hartington Developer
Page 2: IONICchariotsolutions.com/.../04/MikeHartington_ETE2015_Ionic.pdf · 2017-08-23 · IONIC The Missing SDK For Hybrid Apps Mike Hartington | @mhartington. Mike Hartington Developer

IONICThe Missing SDK For Hybrid Apps

Mike Hartington | @mhartington

Page 3: IONICchariotsolutions.com/.../04/MikeHartington_ETE2015_Ionic.pdf · 2017-08-23 · IONIC The Missing SDK For Hybrid Apps Mike Hartington | @mhartington. Mike Hartington Developer

Mike Hartington

Developer Advocate for Ionic

mhartington on twitter & GH

Rhode Island

Page 4: IONICchariotsolutions.com/.../04/MikeHartington_ETE2015_Ionic.pdf · 2017-08-23 · IONIC The Missing SDK For Hybrid Apps Mike Hartington | @mhartington. Mike Hartington Developer

–EVERY DEVELOPER IN THE HISTORY OF DEVELOPMENT

“Say, Johnny, I got this great idea for an app.”

Page 5: IONICchariotsolutions.com/.../04/MikeHartington_ETE2015_Ionic.pdf · 2017-08-23 · IONIC The Missing SDK For Hybrid Apps Mike Hartington | @mhartington. Mike Hartington Developer

CHALLENGES OF NATIVE DEVELOPMENT

Proficiency in each platform required

Entirely separate code bases

Timely & expensive development

Diminishing returns

Page 6: IONICchariotsolutions.com/.../04/MikeHartington_ETE2015_Ionic.pdf · 2017-08-23 · IONIC The Missing SDK For Hybrid Apps Mike Hartington | @mhartington. Mike Hartington Developer

MORE PLATFORMS, MORE CHALLENGES.

Obj-C/Swift Java C#/.NET

Page 7: IONICchariotsolutions.com/.../04/MikeHartington_ETE2015_Ionic.pdf · 2017-08-23 · IONIC The Missing SDK For Hybrid Apps Mike Hartington | @mhartington. Mike Hartington Developer

ANY ALTERNATIVES?

Page 8: IONICchariotsolutions.com/.../04/MikeHartington_ETE2015_Ionic.pdf · 2017-08-23 · IONIC The Missing SDK For Hybrid Apps Mike Hartington | @mhartington. Mike Hartington Developer

Hybrid Apps: HTML5 that acts like native

Direct access to native APIs

Develop a single code base (web platform)

Write once, Run anywhere

Page 9: IONICchariotsolutions.com/.../04/MikeHartington_ETE2015_Ionic.pdf · 2017-08-23 · IONIC The Missing SDK For Hybrid Apps Mike Hartington | @mhartington. Mike Hartington Developer

Turns Out, Yes You Can

Page 10: IONICchariotsolutions.com/.../04/MikeHartington_ETE2015_Ionic.pdf · 2017-08-23 · IONIC The Missing SDK For Hybrid Apps Mike Hartington | @mhartington. Mike Hartington Developer

WHAT THEY DON’T TELL YOU

Page 11: IONICchariotsolutions.com/.../04/MikeHartington_ETE2015_Ionic.pdf · 2017-08-23 · IONIC The Missing SDK For Hybrid Apps Mike Hartington | @mhartington. Mike Hartington Developer

No UI - Bring your own UI

No JS Framework

Old Android is not a nice place to work

No transitions, gesture support,

navigation stack

Page 12: IONICchariotsolutions.com/.../04/MikeHartington_ETE2015_Ionic.pdf · 2017-08-23 · IONIC The Missing SDK For Hybrid Apps Mike Hartington | @mhartington. Mike Hartington Developer

MORE ON CORDOVA LATER…. LET’S LOOK AT THIS ANGULAR

THING

Page 13: IONICchariotsolutions.com/.../04/MikeHartington_ETE2015_Ionic.pdf · 2017-08-23 · IONIC The Missing SDK For Hybrid Apps Mike Hartington | @mhartington. Mike Hartington Developer

ANGULAR

MVC Architecture

Reusable components through Directives

Two Way Data Binding

Hello World in Angular

Page 14: IONICchariotsolutions.com/.../04/MikeHartington_ETE2015_Ionic.pdf · 2017-08-23 · IONIC The Missing SDK For Hybrid Apps Mike Hartington | @mhartington. Mike Hartington Developer

.factory('Speakers', function($http) { return { getSpeakers: function() { return $http({ url: 'https://data.com/speakers.json', method: 'GET' }) } } })

.controller('MainCtrl', function($scope, Speakers) { $scope.speakers = [];

Speakers.getSpeakers().success(function(data) { $scope.speakers = data; }); });

MODELFactory

Controller

Page 15: IONICchariotsolutions.com/.../04/MikeHartington_ETE2015_Ionic.pdf · 2017-08-23 · IONIC The Missing SDK For Hybrid Apps Mike Hartington | @mhartington. Mike Hartington Developer

<div ng-controller=“MainCtrl">

<div ng-repeat="speaker in speakers">

<div> {{speaker.firstName}}

{{speaker.lastName}} </div>

<div> {{speaker.bio}} </div>

</div>

</div>

VIEWA single html page that gets populated by a controller

No application logic, just visuals here

ng-controller? ng-repeat?

What are these curly braces?

Page 16: IONICchariotsolutions.com/.../04/MikeHartington_ETE2015_Ionic.pdf · 2017-08-23 · IONIC The Missing SDK For Hybrid Apps Mike Hartington | @mhartington. Mike Hartington Developer

.config(function($stateProvider, $urlRouterProvider) {

$stateProvider .state('signin', { url: '/sign-in', templateUrl: 'templates/sign-in.html', controller: 'SignInCtrl' }) .state('forgotpassword', { url: '/forgot-password', templateUrl: 'templates/forgot-password.html' })

$urlRouterProvider.otherwise('/sign-in');

})

STATESManage application states/views and

provides templates, controllers, urls

Page 17: IONICchariotsolutions.com/.../04/MikeHartington_ETE2015_Ionic.pdf · 2017-08-23 · IONIC The Missing SDK For Hybrid Apps Mike Hartington | @mhartington. Mike Hartington Developer

DIRECTIVES.directive('blink', function() { return { restrict: 'E', link: function($scope, $element, $attribute) {

function showElement() { $element.css("visibility", "visible"); setTimeout(hideElement, 1000); }

function hideElement() { $element.css("visibility", "hidden"); setTimeout(showElement, 1000); } showElement(); } }; })

<blink>Hello World</blink>

Page 18: IONICchariotsolutions.com/.../04/MikeHartington_ETE2015_Ionic.pdf · 2017-08-23 · IONIC The Missing SDK For Hybrid Apps Mike Hartington | @mhartington. Mike Hartington Developer

WHAT THEY DON’T TELL YOU

Page 19: IONICchariotsolutions.com/.../04/MikeHartington_ETE2015_Ionic.pdf · 2017-08-23 · IONIC The Missing SDK For Hybrid Apps Mike Hartington | @mhartington. Mike Hartington Developer

No UI - Bring your own UI

Ng-Repeat is a Double-edged Sword

Bit of a learning curve

Page 20: IONICchariotsolutions.com/.../04/MikeHartington_ETE2015_Ionic.pdf · 2017-08-23 · IONIC The Missing SDK For Hybrid Apps Mike Hartington | @mhartington. Mike Hartington Developer

THE BEST OF BOTH WORLDS

Page 21: IONICchariotsolutions.com/.../04/MikeHartington_ETE2015_Ionic.pdf · 2017-08-23 · IONIC The Missing SDK For Hybrid Apps Mike Hartington | @mhartington. Mike Hartington Developer

Angular JS

Create scalable web apps

Structured JS framework

Started around 2009

Cordova

Create cross platform

mobile apps

No JS framework

Started around 2009

Page 22: IONICchariotsolutions.com/.../04/MikeHartington_ETE2015_Ionic.pdf · 2017-08-23 · IONIC The Missing SDK For Hybrid Apps Mike Hartington | @mhartington. Mike Hartington Developer
Page 23: IONICchariotsolutions.com/.../04/MikeHartington_ETE2015_Ionic.pdf · 2017-08-23 · IONIC The Missing SDK For Hybrid Apps Mike Hartington | @mhartington. Mike Hartington Developer

WHAT DO WE NEED NOW

A bridge between web and native

Rich, native-style UI components

Gestures, Transitions, Navigation Stacks

UI APIs, not just jQuery widgets

Page 24: IONICchariotsolutions.com/.../04/MikeHartington_ETE2015_Ionic.pdf · 2017-08-23 · IONIC The Missing SDK For Hybrid Apps Mike Hartington | @mhartington. Mike Hartington Developer

Howdy

Page 25: IONICchariotsolutions.com/.../04/MikeHartington_ETE2015_Ionic.pdf · 2017-08-23 · IONIC The Missing SDK For Hybrid Apps Mike Hartington | @mhartington. Mike Hartington Developer

“Focus on building your app.Not on how your app should work”

Page 26: IONICchariotsolutions.com/.../04/MikeHartington_ETE2015_Ionic.pdf · 2017-08-23 · IONIC The Missing SDK For Hybrid Apps Mike Hartington | @mhartington. Mike Hartington Developer

WEB TECHNOLOGIES YOU ALREADY KNOW AND LOVE

Page 27: IONICchariotsolutions.com/.../04/MikeHartington_ETE2015_Ionic.pdf · 2017-08-23 · IONIC The Missing SDK For Hybrid Apps Mike Hartington | @mhartington. Mike Hartington Developer

STANDING ON THE SHOULDERS OF ANGULAR

Proven for large-scale web app development

Extends the HTML vocabulary

UI Components using Directives and Services

Page 28: IONICchariotsolutions.com/.../04/MikeHartington_ETE2015_Ionic.pdf · 2017-08-23 · IONIC The Missing SDK For Hybrid Apps Mike Hartington | @mhartington. Mike Hartington Developer

CSS generated from the Sass preprocessor

Quickly give your app its own look and feel

CSS designed to be easily overridden

Variables based with default settings

Page 29: IONICchariotsolutions.com/.../04/MikeHartington_ETE2015_Ionic.pdf · 2017-08-23 · IONIC The Missing SDK For Hybrid Apps Mike Hartington | @mhartington. Mike Hartington Developer

PLATFORM CONTINUITY

Page 30: IONICchariotsolutions.com/.../04/MikeHartington_ETE2015_Ionic.pdf · 2017-08-23 · IONIC The Missing SDK For Hybrid Apps Mike Hartington | @mhartington. Mike Hartington Developer

How It All Comes Together

Your AppIonic

AngularWebView (Cordova)

Native App

Page 31: IONICchariotsolutions.com/.../04/MikeHartington_ETE2015_Ionic.pdf · 2017-08-23 · IONIC The Missing SDK For Hybrid Apps Mike Hartington | @mhartington. Mike Hartington Developer

SIDE MENUS<ion-side-menus>

<!-- Left menu --> <ion-side-menu side="left"> </ion-side-menu>

<!-- Center content --> <ion-side-menu-content> <ion-nav-view></ion-nav-view>

</ion-side-menu-content>

<!-- Right menu --> <ion-side-menu side="right"> </ion-side-menu> </ion-side-menus>

Page 32: IONICchariotsolutions.com/.../04/MikeHartington_ETE2015_Ionic.pdf · 2017-08-23 · IONIC The Missing SDK For Hybrid Apps Mike Hartington | @mhartington. Mike Hartington Developer

TABSNested views

Each tab has its own nav history

Abstract states in AngularUI Router

<ion-tabs class="tabs-icon-top">

<ion-tab icon="ion-home">

<ion-nav-view name="home-tab"></ion-nav-view>

</ion-tab>

</ion-tabs>

Page 33: IONICchariotsolutions.com/.../04/MikeHartington_ETE2015_Ionic.pdf · 2017-08-23 · IONIC The Missing SDK For Hybrid Apps Mike Hartington | @mhartington. Mike Hartington Developer

COLLECTION REPEATReplacement for ng-repeat

Inspired by iOS’s UICollectionView

Only renders the viewable items

<ion-content> <div class="list"> <a class="item"

collection-repeat="item in items"> {{item.name}} </a> </div> </ion-content>

Page 34: IONICchariotsolutions.com/.../04/MikeHartington_ETE2015_Ionic.pdf · 2017-08-23 · IONIC The Missing SDK For Hybrid Apps Mike Hartington | @mhartington. Mike Hartington Developer

PULL TO REFRESH

<ion-content> <ion-refresher on-refresh="fetchMore()"> </ion-refresher> <ion-list> <ion-item></ion-item> </ion-list> </ion-content>

Common design pattern to fetch data

Takes a simple function

Customize loading text and icon

Page 35: IONICchariotsolutions.com/.../04/MikeHartington_ETE2015_Ionic.pdf · 2017-08-23 · IONIC The Missing SDK For Hybrid Apps Mike Hartington | @mhartington. Mike Hartington Developer

...but there's more to Ionic

Page 36: IONICchariotsolutions.com/.../04/MikeHartington_ETE2015_Ionic.pdf · 2017-08-23 · IONIC The Missing SDK For Hybrid Apps Mike Hartington | @mhartington. Mike Hartington Developer

Starter projects ready for customization

LiveReload both local and native builds

Build and run native apps

npm install -g ionic cordova

Page 37: IONICchariotsolutions.com/.../04/MikeHartington_ETE2015_Ionic.pdf · 2017-08-23 · IONIC The Missing SDK For Hybrid Apps Mike Hartington | @mhartington. Mike Hartington Developer

Chromium for Android WebViews

Upgrade Android 4.0+ and above

Same hardware, modern software

Amazing performance improvements

MODERN CHROMIUM!

Page 38: IONICchariotsolutions.com/.../04/MikeHartington_ETE2015_Ionic.pdf · 2017-08-23 · IONIC The Missing SDK For Hybrid Apps Mike Hartington | @mhartington. Mike Hartington Developer
Page 39: IONICchariotsolutions.com/.../04/MikeHartington_ETE2015_Ionic.pdf · 2017-08-23 · IONIC The Missing SDK For Hybrid Apps Mike Hartington | @mhartington. Mike Hartington Developer
Page 40: IONICchariotsolutions.com/.../04/MikeHartington_ETE2015_Ionic.pdf · 2017-08-23 · IONIC The Missing SDK For Hybrid Apps Mike Hartington | @mhartington. Mike Hartington Developer
Page 41: IONICchariotsolutions.com/.../04/MikeHartington_ETE2015_Ionic.pdf · 2017-08-23 · IONIC The Missing SDK For Hybrid Apps Mike Hartington | @mhartington. Mike Hartington Developer
Page 42: IONICchariotsolutions.com/.../04/MikeHartington_ETE2015_Ionic.pdf · 2017-08-23 · IONIC The Missing SDK For Hybrid Apps Mike Hartington | @mhartington. Mike Hartington Developer
Page 43: IONICchariotsolutions.com/.../04/MikeHartington_ETE2015_Ionic.pdf · 2017-08-23 · IONIC The Missing SDK For Hybrid Apps Mike Hartington | @mhartington. Mike Hartington Developer

DID I MENTION ICONS?Over 700 MIT licensed font-icons included

Ionicons

Page 44: IONICchariotsolutions.com/.../04/MikeHartington_ETE2015_Ionic.pdf · 2017-08-23 · IONIC The Missing SDK For Hybrid Apps Mike Hartington | @mhartington. Mike Hartington Developer

DEMO TIME! MAY THE DEMO GODS BE WITH US

ionic start ▌~

Page 45: IONICchariotsolutions.com/.../04/MikeHartington_ETE2015_Ionic.pdf · 2017-08-23 · IONIC The Missing SDK For Hybrid Apps Mike Hartington | @mhartington. Mike Hartington Developer

GETTING STARTED

Christophe Coenraets Cordova tutorial

Dan Wahlin’s Angular in 60-ish minutes

Ionic in Action Book

Ionic Forum

Page 46: IONICchariotsolutions.com/.../04/MikeHartington_ETE2015_Ionic.pdf · 2017-08-23 · IONIC The Missing SDK For Hybrid Apps Mike Hartington | @mhartington. Mike Hartington Developer

ANGULAR 2?

NG-Conf 2015 | Angular 2 & TypeScript

New syntax and much more power

Incredible Fast

New Router

Page 47: IONICchariotsolutions.com/.../04/MikeHartington_ETE2015_Ionic.pdf · 2017-08-23 · IONIC The Missing SDK For Hybrid Apps Mike Hartington | @mhartington. Mike Hartington Developer
Page 48: IONICchariotsolutions.com/.../04/MikeHartington_ETE2015_Ionic.pdf · 2017-08-23 · IONIC The Missing SDK For Hybrid Apps Mike Hartington | @mhartington. Mike Hartington Developer
Page 49: IONICchariotsolutions.com/.../04/MikeHartington_ETE2015_Ionic.pdf · 2017-08-23 · IONIC The Missing SDK For Hybrid Apps Mike Hartington | @mhartington. Mike Hartington Developer

</HTML>

@MHARTINGTON

https://github.com/mhartington/PhillyETE