SlideShare a Scribd company logo
Crash Course in
AngularJS + Ionic
(Deep dive)
Nolan Erck
(with assistance from Scott Steinbeck)
About Me
● Chief Consultant / Owner, South of Shasta Consulting
– Software Development, Training, Design.
● Using ColdFusion since 1999 (4.x)
● Other stuff: C++, Java, jQuery, PHP, .NET, HTML5,
Android, you get the idea...
● Manager of SacInteractive User Group.
● Reformed Video Game Developer (Grim Fandango,
SimPark, StarWars Rogue Squadron, etc).
● Music Junkie.
Crash Course in AngularJS + Ionic (Deep dive)
Crash Course in AngularJS + Ionic (Deep dive)
Crash Course in AngularJS + Ionic (Deep dive)
Today's Agenda
● Intro to MVC
● Intro to AngularJS
– Some basic features, concepts and code samples.
● [break time]
● Intro to Ionic
– More features, code samples, simulator, etc.
● Other resources.
● Questions.
Prerequisites
● Good understanding of “modern” JavaScript.
– Scopes, anonymous functions, classes, objects.
● Previous MVC experience is helpful but not
req'd.
● You'll also get exposed to:
– Node.js, PhoneGap/Cordova, mobile SDKs
(Android, Xcode, etc).
● And 1 more thing you need to know...
Prerequisites
● Know that...
– Object Oriented Programming is hard.
– This “hybrid mobile” stuff is different than what you
may be used to.
– And some of it is confusing at first.
● And that's NORMAL.
We're using Angular 1.x
● AngularJS 1.x is released.
● AngularJS 2.x is technically still in beta.
– Moving target
– Really different than 1.x
– Bigger learning curve
● Transpiling (boo, hiss)
● TypeScript
– Lots of smart people at this conference to ask about
2.x features.
How do I get started?
● Easy!
● https://angularjs.org/
● Click “download”.
– (npm and bower options available too)
● Angular.js is all you need to start.
– (Additional JS files for fancier features. We'll get to
that later.)
How do I get started?
● <script src=”angular.js”></script>
● <html ng-app>
● {{variable name / expression}}
● [DEMO – Hello World]
What is MVC?
● Model View Controller
● Design Pattern
● Splits your app up into 3 logical sections.
– Model – where your data and related logic goes.
– View – the parts of your app you “view” (HTML,
CSS).
– Controller – determines what happens next in the
app (some business logic maybe too).
● The “restaurant” analogy.
The “Model”
● Short for “data model” (kind of)
● Where your data lives
● Can be a local JS variable, localStorage, REST
API, some other ajax request, etc.
● The app doesn't care
● Restaurant: the kitchen
[DEMO - Model]
The “View”
● The part of the app you “view”.
– HTML, CSS, JavaScript
<html>
<body>
this part here is the “view”
</body>
</html>
● Restaurant: the menu and plates of food
The “Controller”
● Controls what happens next.
– Send info to the model.
– Update the View with an error/success message.
– Move the User to a new section of the app.
– Etc.
● Restaurant: the waiter.
● AngularJS: $scope
● $scope is the waiter
[DEMO - Controller]
MVC – All Together
Model
- data
- localStorage
- bus. Logic
- etc
Controller
- route user
from point a
to point b
- route user
back to point
a if Model
said
something
was missing
View
- HTML
- CSS
- jQuery
- Bootstrap
- etc.
What is AngularJS?
● MVC framework for JavaScript SPAs.
● Very few moving parts to get started.
– Include 1 JS file, add “ng-app” to your HTML, done!
● Some nice features.
– Dependency Injection
– Routes
– 2-way Data Binding
– Various other things...
Single Page Application (SPA)
● Instead of contact.html, about.html, products.html
● You have these guys:
– Sitename.com/#/contact
– Sitename.com/#/products
● The whole site is routed through index.html via
some internal machinery.
● Entire site is downloaded at once, then accessed
via the browser cache.
● Only new data is retrieved from the server.
Looping
● In Controller / Model
– Standard JavaScript
for( i = 0; i < 5; i++ ) { … }
– angular.forEach()
var values = { name: 'Martin Gore', instrument: 'guitar' };
var log = [];
angular.forEach(values, function(value, key) {
this.push(key + ': ' + value);
} );
Looping
● In View
– ng-repeat
● <div data-ng-repeat="i in [1,2,3,4,5]">
● <div data-ng-repeat="item in aryGroceries">
[DEMO - Looping]
Filters
● Select a subset of items from an array.
● When you don't want to loop over all the
elements in a given array.
● Like a built-in if() statement.
– For sorting data on the fly.
● [DEMO - Filters]
Routes
● URLs in an Angular app look like so:
– /index.html#/home
● Everything is loaded via index.html
● Each #section as it's own “view” that's
dynamically injected as the app is running.
[DEMO - Routes]
Getting data via AJAX
● $http.get() method
– Performs HTTP GET to retrieve data in JSON form.
– Could be a local file, REST, anything that returns
JSON.
[DEMO - JSONdata]
Custom Directives
● Basically custom tags written in AngularJS.
– <my-custom-widget />
● Works just like regular HTML tags.
● Similar to Polymer.
● Like extended tags in HTML5, or custom tags in
ColdFusion.
● Can be custom “tags”, “classes” or “attributes”.
[Demo - Directives]
Services
● AKA modules, utility libraries, etc
● Wired together using Dependency Injection
● “$name” for built-in core Angular services
– $http, $resource, etc
● “name” for user-developed services
– MusicianService, etc
...and that's AngularJS
● That (in an extreme nutshell) is AngularJS.
– (There are LOTS more features we didn't cover.)
● Can be used by itself for SPA web apps.
● Not mobile-specific.
● Break time, then on to Ionic...
Ionic
● Hybrid mobile app platform
● iOS and Android in 1 codebase
● JavaScript, HTML, CSS
● No Swift, Objective-C, Java (Android)
Ionic
● Uses PhoneGap (aka Cordova)
– HTML, CSS, JavaScript gets compiled
– Combined with a WebView control
– Code → WebView (chrome-less browser)
– Packaged into an app
● iPhone binary, Android APK file.
– The device is “running an app, that happens to be a
web browser”.
Ionic
● Is (essentially) mobile-specific.
● Sits on top of PhoneGap and Angular.
● Built on Angular's “Directives” and “Services”.
● Also uses PhoneGap's “magic”.
● Gives a Bootstrap-esque set of functionality for
hybrid mobile apps.
Ionic
● Performance “obsessed”.
– Minimal DOM manipulation
– Removed 300ms tap delay
– Etc
● Lots of other neat features.
● We'll barely scratch the surface today.
Ionic – Getting Started
● Need Node.js, Ionic packages, Cordova
packages.
● If building apps locally, need Android and
iPhone SDKs (or use PhoneGapBuild).
● Initial installation can be a bit of a pain.
– Especially if you don't run bleeding edge OS, dev
tools, etc.
Ionic – Getting Started
● To start:
– ionic start my-app [blank]
– Generates all files needed to start an app.
– “blank” is the template name. Several to pick from,
we're starting with a bare-bones app.
[DEMO 1]
– ionic start my-app tabs
– [DEMO 2]
– ionic start my-app sidemenu
– [DEMO 3]
Project Structure
Bower, Gulp, etc
– build things (optional)
/www
– main code folder
/scss
– Optional SASS things
/plugins
– Cordova / PhoneGap
Plugins
Let's Make An App!
● Warning:
– Live coding about to happen!
– Dependency on the wifi about to happen!
– Please stop streaming cat videos on YouTube for
the next few minutes.
– Thanks. :)
[DEMO ionic start DevObjective2016 tabs]
Project Structure – www folder
/css
– empty by default
/img
– Auto-resized by ionic build
/js
– My code for the app
/lib
– JS libraries, angular, ionic
– Ionic CSS, SVG fonts, etc
/templates
– My views for the app
Project Structure
● <ion-*> tags
● Technically Angular directives and services
under the hood.
● The stuff that looks like Angular is Angular.
● The <ion-*> tags are the Ionic part.
● All the AngularJS you already know works the
exact same way!
[DEMO 4]
[DEMO 5]
Project Structure
● Lots of CSS classes
● Very Bootstrap-esque
– Add class or classes to HTML tags for most of the base
functionality.
Code Samples
● Header and Subheader
<div class="bar bar-header">
<h1 class="title">Header</h1>
</div>
<div class="bar bar-subheader">
<h2 class="title">Sub Header</h2>
</div>
Code Samples
● Buttons
<button class="button"> Default </button>
<button class="button button-light"> Cancel </button>
<button class="button button-positive"> Save </button>
Code Samples
● Lists
<div class="list">
<div class="item item-divider"> Guitar Players </div>
<a class="item" href="#"> Steve Vai </a>
<a class="item" href="#"> Eric Johnson </a>
<a class="item" href="#"> Stanley Jordan </a>
</div>
Code Samples
● Cards
<ion-content>
<div class="card">
<div class="item item-text-wrap">
Card content goes here.
</div>
</div>
</ion-content>
[DEMO - cards]
Code Samples – Form Controls
Code Samples – Form Controls
Form Controls - Checkboxes
<ion-list>
<ion-checkbox ng-model="power.flux">Flux Capacitor
</ion-checkbox>
<ion-checkbox ng-model="power.gigawatt">
1.21 Gigawatts</ion-checkbox>
<ion-checkbox ng-model="power.delorean">
Delorean</ion-checkbox>
</ion-list>
Range Control
Grid Layout
Based on FlexBox
Add a column and Ionic will figure out the
“layout math” for you.
And lots more!
● Utility classes
– Colors, icons, padding
– Platform-specific classes
● Style iPhone differently than Android, etc
● User created add-ons
● Plugins
Testing Your App
● ionic serve
– Runs in the browser
● ionic serve -- lab
– Examples of iOS and Android layouts
● Code is sync'd
– No reloading the browser needed
● ionic emulate iOS
– Starts up the iOS simulator
Testing Your App
● Ionic View
– http://view.ionic.io/
– Easy private Beta testing
– No iPhone Developer License needed
– No “registering devices with Apple” needed
– Install Ionic View app, add the serial #, done.
[DEMO – Ionic View upload, install]
Publishing Your App
● Same as any other mobile app
– Google Play Store (Android)
● Make your APK and submit it
– Apple App Store
● Jump thru all of Apple's hoops
● Subject yourself to their pain
● Build.phonegap.com
– Helps with build process
– Still have to deal with Apple's submission process.
No way around that.
What's the catch?
● Same as any PhoneGap/Cordova project.
● Need to install the SDKs for each platform.
– Takes time, hassles, etc.
– Android isn't super intuitive
– iOS requires Xcode, latest OSX, etc.
Other Resources
● AngularJS.org
● Book “Pro AngularJS”
● Book “PhoneGap Mobile Application Development
Cookbook” – Matt Gifford
● IonicFramework.com
● Ionic Creator IDE
● Ionic View – easy “private QA” app
● Ray Camden's Ionic preso from CF.Objective last year.
Questions? Comments?
● Ways to reach me:
– Southofshasta.com
– nolan@southofshasta.com
– Twitter @southofshasta
Free music trivia instead of swag giveaways.
You're welcome.
(Thanks again to Scott Steinbeck for assistance!)
Thanks!
Crash Course in
AngularJS + Ionic
(Deep dive)
Nolan Erck
(with assistance from Scott Steinbeck)
About Me
● Chief Consultant / Owner, South of Shasta Consulting
– Software Development, Training, Design.
● Using ColdFusion since 1999 (4.x)
● Other stuff: C++, Java, jQuery, PHP, .NET, HTML5,
Android, you get the idea...
● Manager of SacInteractive User Group.
● Reformed Video Game Developer (Grim Fandango,
SimPark, StarWars Rogue Squadron, etc).
● Music Junkie.
Crash Course in AngularJS + Ionic (Deep dive)
Crash Course in AngularJS + Ionic (Deep dive)
Crash Course in AngularJS + Ionic (Deep dive)
Today's Agenda
● Intro to MVC
● Intro to AngularJS
– Some basic features, concepts and code samples.
● [break time]
● Intro to Ionic
– More features, code samples, simulator, etc.
● Other resources.
● Questions.
Prerequisites
● Good understanding of “modern” JavaScript.
– Scopes, anonymous functions, classes, objects.
● Previous MVC experience is helpful but not
req'd.
● You'll also get exposed to:
– Node.js, PhoneGap/Cordova, mobile SDKs
(Android, Xcode, etc).
● And 1 more thing you need to know...
Prerequisites
● Know that...
– Object Oriented Programming is hard.
– This “hybrid mobile” stuff is different than what you
may be used to.
– And some of it is confusing at first.
● And that's NORMAL.
We're using Angular 1.x
● AngularJS 1.x is released.
● AngularJS 2.x is technically still in beta.
– Moving target
– Really different than 1.x
– Bigger learning curve
● Transpiling (boo, hiss)
● TypeScript
– Lots of smart people at this conference to ask about
2.x features.
How do I get started?
● Easy!
● https://angularjs.org/
● Click “download”.
– (npm and bower options available too)
● Angular.js is all you need to start.
– (Additional JS files for fancier features. We'll get to
that later.)
How do I get started?
● <script src=”angular.js”></script>
● <html ng-app>
● {{variable name / expression}}
● [DEMO – Hello World]
What is MVC?
● Model View Controller
● Design Pattern
● Splits your app up into 3 logical sections.
– Model – where your data and related logic goes.
– View – the parts of your app you “view” (HTML,
CSS).
– Controller – determines what happens next in the
app (some business logic maybe too).
● The “restaurant” analogy.
The “Model”
● Short for “data model” (kind of)
● Where your data lives
● Can be a local JS variable, localStorage, REST
API, some other ajax request, etc.
● The app doesn't care
● Restaurant: the kitchen
[DEMO - Model]
The “View”
● The part of the app you “view”.
– HTML, CSS, JavaScript
<html>
<body>
this part here is the “view”
</body>
</html>
● Restaurant: the menu and plates of food
The “Controller”
● Controls what happens next.
– Send info to the model.
– Update the View with an error/success message.
– Move the User to a new section of the app.
– Etc.
● Restaurant: the waiter.
● AngularJS: $scope
● $scope is the waiter
[DEMO - Controller]
MVC – All Together
Model
- data
- localStorage
- bus. Logic
- etc
Controller
- route user
from point a
to point b
- route user
back to point
a if Model
said
something
was missing
View
- HTML
- CSS
- jQuery
- Bootstrap
- etc.
What is AngularJS?
● MVC framework for JavaScript SPAs.
● Very few moving parts to get started.
– Include 1 JS file, add “ng-app” to your HTML, done!
● Some nice features.
– Dependency Injection
– Routes
– 2-way Data Binding
– Various other things...
Single Page Application (SPA)
● Instead of contact.html, about.html, products.html
● You have these guys:
– Sitename.com/#/contact
– Sitename.com/#/products
● The whole site is routed through index.html via
some internal machinery.
● Entire site is downloaded at once, then accessed
via the browser cache.
● Only new data is retrieved from the server.
Looping
● In Controller / Model
– Standard JavaScript
for( i = 0; i < 5; i++ ) { … }
– angular.forEach()
var values = { name: 'Martin Gore', instrument: 'guitar' };
var log = [];
angular.forEach(values, function(value, key) {
this.push(key + ': ' + value);
} );
Looping
● In View
– ng-repeat
● <div data-ng-repeat="i in [1,2,3,4,5]">
● <div data-ng-repeat="item in aryGroceries">
[DEMO - Looping]
Filters
● Select a subset of items from an array.
● When you don't want to loop over all the
elements in a given array.
● Like a built-in if() statement.
– For sorting data on the fly.
● [DEMO - Filters]
Routes
● URLs in an Angular app look like so:
– /index.html#/home
● Everything is loaded via index.html
● Each #section as it's own “view” that's
dynamically injected as the app is running.
[DEMO - Routes]
Getting data via AJAX
● $http.get() method
– Performs HTTP GET to retrieve data in JSON form.
– Could be a local file, REST, anything that returns
JSON.
[DEMO - JSONdata]
Custom Directives
● Basically custom tags written in AngularJS.
– <my-custom-widget />
● Works just like regular HTML tags.
● Similar to Polymer.
● Like extended tags in HTML5, or custom tags in
ColdFusion.
● Can be custom “tags”, “classes” or “attributes”.
[Demo - Directives]
Services
● AKA modules, utility libraries, etc
● Wired together using Dependency Injection
● “$name” for built-in core Angular services
– $http, $resource, etc
● “name” for user-developed services
– MusicianService, etc
...and that's AngularJS
● That (in an extreme nutshell) is AngularJS.
– (There are LOTS more features we didn't cover.)
● Can be used by itself for SPA web apps.
● Not mobile-specific.
● Break time, then on to Ionic...
Ionic
● Hybrid mobile app platform
● iOS and Android in 1 codebase
● JavaScript, HTML, CSS
● No Swift, Objective-C, Java (Android)
Ionic
● Uses PhoneGap (aka Cordova)
– HTML, CSS, JavaScript gets compiled
– Combined with a WebView control
– Code → WebView (chrome-less browser)
– Packaged into an app
● iPhone binary, Android APK file.
– The device is “running an app, that happens to be a
web browser”.
Ionic
● Is (essentially) mobile-specific.
● Sits on top of PhoneGap and Angular.
● Built on Angular's “Directives” and “Services”.
● Also uses PhoneGap's “magic”.
● Gives a Bootstrap-esque set of functionality for
hybrid mobile apps.
Ionic
● Performance “obsessed”.
– Minimal DOM manipulation
– Removed 300ms tap delay
– Etc
● Lots of other neat features.
● We'll barely scratch the surface today.
Ionic – Getting Started
● Need Node.js, Ionic packages, Cordova
packages.
● If building apps locally, need Android and
iPhone SDKs (or use PhoneGapBuild).
● Initial installation can be a bit of a pain.
– Especially if you don't run bleeding edge OS, dev
tools, etc.
Ionic – Getting Started
● To start:
– ionic start my-app [blank]
– Generates all files needed to start an app.
– “blank” is the template name. Several to pick from,
we're starting with a bare-bones app.
[DEMO 1]
– ionic start my-app tabs
– [DEMO 2]
– ionic start my-app sidemenu
– [DEMO 3]
Project Structure
Bower, Gulp, etc
– build things (optional)
/www
– main code folder
/scss
– Optional SASS things
/plugins
– Cordova / PhoneGap
Plugins
Let's Make An App!
● Warning:
– Live coding about to happen!
– Dependency on the wifi about to happen!
– Please stop streaming cat videos on YouTube for
the next few minutes.
– Thanks. :)
[DEMO ionic start DevObjective2016 tabs]
Project Structure – www folder
/css
– empty by default
/img
– Auto-resized by ionic build
/js
– My code for the app
/lib
– JS libraries, angular, ionic
– Ionic CSS, SVG fonts, etc
/templates
– My views for the app
Project Structure
● <ion-*> tags
● Technically Angular directives and services
under the hood.
● The stuff that looks like Angular is Angular.
● The <ion-*> tags are the Ionic part.
● All the AngularJS you already know works the
exact same way!
[DEMO 4]
[DEMO 5]
Project Structure
● Lots of CSS classes
● Very Bootstrap-esque
– Add class or classes to HTML tags for most of the base
functionality.
Code Samples
● Header and Subheader
<div class="bar bar-header">
<h1 class="title">Header</h1>
</div>
<div class="bar bar-subheader">
<h2 class="title">Sub Header</h2>
</div>
Code Samples
● Buttons
<button class="button"> Default </button>
<button class="button button-light"> Cancel </button>
<button class="button button-positive"> Save </button>
Code Samples
● Lists
<div class="list">
<div class="item item-divider"> Guitar Players </div>
<a class="item" href="#"> Steve Vai </a>
<a class="item" href="#"> Eric Johnson </a>
<a class="item" href="#"> Stanley Jordan </a>
</div>
Code Samples
● Cards
<ion-content>
<div class="card">
<div class="item item-text-wrap">
Card content goes here.
</div>
</div>
</ion-content>
[DEMO - cards]
Code Samples – Form Controls
Code Samples – Form Controls
Form Controls - Checkboxes
<ion-list>
<ion-checkbox ng-model="power.flux">Flux Capacitor
</ion-checkbox>
<ion-checkbox ng-model="power.gigawatt">
1.21 Gigawatts</ion-checkbox>
<ion-checkbox ng-model="power.delorean">
Delorean</ion-checkbox>
</ion-list>
Range Control
Grid Layout
Based on FlexBox
Add a column and Ionic will figure out the
“layout math” for you.
And lots more!
● Utility classes
– Colors, icons, padding
– Platform-specific classes
● Style iPhone differently than Android, etc
● User created add-ons
● Plugins
Testing Your App
● ionic serve
– Runs in the browser
● ionic serve -- lab
– Examples of iOS and Android layouts
● Code is sync'd
– No reloading the browser needed
● ionic emulate iOS
– Starts up the iOS simulator
Testing Your App
● Ionic View
– http://view.ionic.io/
– Easy private Beta testing
– No iPhone Developer License needed
– No “registering devices with Apple” needed
– Install Ionic View app, add the serial #, done.
[DEMO – Ionic View upload, install]
Publishing Your App
● Same as any other mobile app
– Google Play Store (Android)
● Make your APK and submit it
– Apple App Store
● Jump thru all of Apple's hoops
● Subject yourself to their pain
● Build.phonegap.com
– Helps with build process
– Still have to deal with Apple's submission process.
No way around that.
What's the catch?
● Same as any PhoneGap/Cordova project.
● Need to install the SDKs for each platform.
– Takes time, hassles, etc.
– Android isn't super intuitive
– iOS requires Xcode, latest OSX, etc.
Other Resources
● AngularJS.org
● Book “Pro AngularJS”
● Book “PhoneGap Mobile Application Development
Cookbook” – Matt Gifford
● IonicFramework.com
● Ionic Creator IDE
● Ionic View – easy “private QA” app
● Ray Camden's Ionic preso from CF.Objective last year.
Questions? Comments?
● Ways to reach me:
– Southofshasta.com
– nolan@southofshasta.com
– Twitter @southofshasta
Free music trivia instead of swag giveaways.
You're welcome.
(Thanks again to Scott Steinbeck for assistance!)
Thanks!

More Related Content

What's hot (20)

PDF
Developing, building, testing and deploying react native apps
Leena N
 
PDF
jQuery Proven Performance Tips & Tricks
Addy Osmani
 
PPT
React native
Mohammed El Rafie Tarabay
 
PDF
The Complementarity of React and Web Components
Andrew Rota
 
PDF
Алексей Швайка "Bundling: you are doing it wrong"
Fwdays
 
PDF
Anatomy of a Modern Node.js Application Architecture
AppDynamics
 
PDF
Node.js and Selenium Webdriver, a journey from the Java side
Mek Srunyu Stittri
 
PPTX
Angular js
Mauro Servienti
 
PDF
APIs: A Better Alternative to Page Objects
Sauce Labs
 
PDF
Plugin Development @ WordCamp Norway 2014
Barry Kooij
 
PDF
Nightwatch at Tilt
Dave King
 
PDF
A Debugging Adventure: Journey through Ember.js Glue
Mike North
 
PPTX
[Srijan Wednesday Webinars] Developing Large Scale Applications in AngularJS
Srijan Technologies
 
PDF
Web sockets in Angular
Yakov Fain
 
PPTX
Bdd with Cucumber and Mocha
Atish Narlawar
 
PDF
Fullstack End-to-end test automation with Node.js, one year later
Mek Srunyu Stittri
 
PDF
Behavior Driven Development and Automation Testing Using Cucumber
KMS Technology
 
PDF
Spring Day | WaveMaker - Spring Roo - SpringSource Tool Suite: Choosing the R...
JAX London
 
PDF
Laravel 8 export data as excel file with example
Katy Slemon
 
PDF
BDD in Java using Cucumber
slavkurochkin
 
Developing, building, testing and deploying react native apps
Leena N
 
jQuery Proven Performance Tips & Tricks
Addy Osmani
 
The Complementarity of React and Web Components
Andrew Rota
 
Алексей Швайка "Bundling: you are doing it wrong"
Fwdays
 
Anatomy of a Modern Node.js Application Architecture
AppDynamics
 
Node.js and Selenium Webdriver, a journey from the Java side
Mek Srunyu Stittri
 
Angular js
Mauro Servienti
 
APIs: A Better Alternative to Page Objects
Sauce Labs
 
Plugin Development @ WordCamp Norway 2014
Barry Kooij
 
Nightwatch at Tilt
Dave King
 
A Debugging Adventure: Journey through Ember.js Glue
Mike North
 
[Srijan Wednesday Webinars] Developing Large Scale Applications in AngularJS
Srijan Technologies
 
Web sockets in Angular
Yakov Fain
 
Bdd with Cucumber and Mocha
Atish Narlawar
 
Fullstack End-to-end test automation with Node.js, one year later
Mek Srunyu Stittri
 
Behavior Driven Development and Automation Testing Using Cucumber
KMS Technology
 
Spring Day | WaveMaker - Spring Roo - SpringSource Tool Suite: Choosing the R...
JAX London
 
Laravel 8 export data as excel file with example
Katy Slemon
 
BDD in Java using Cucumber
slavkurochkin
 

Viewers also liked (20)

PDF
Rethinking Mobile with Ionic
Mike Hartington
 
PPT
Effective Communication Of Data Inspired by Stephen Few
Cory Grenier
 
PPTX
Ionic Framework - get up and running to build hybrid mobile apps
Andreas Sahle
 
PPTX
Ionic 2 - Hybridapps auf Steroiden
Hendrik Lösch
 
PDF
Cordova, Angularjs & Ionic @ Codeaholics
Eddie Lau
 
PDF
Workshop Ionic Framework - CC FE & UX
JWORKS powered by Ordina
 
PDF
Art and Science of Dashboard Design
SavvyData
 
PPTX
Hybrid app in ionic framework overview
Sanket Devlekar
 
ODP
Desenvolvendo uma aplicação híbrida para Android e IOs utilizando Ionic, aces...
Juliano Martins
 
PDF
Hybrid Apps with Ionic Framework
Bramus Van Damme
 
PDF
Cross Platform Mobile Apps with the Ionic Framework
Troy Miles
 
PPTX
Building mobile app with Ionic Framework
Huy Trần
 
PDF
Ionic - Revolutionizing Hybrid Mobile Application Development
Justin James
 
PDF
Cordova + Ionic + MobileFirst
Raymond Camden
 
PPTX
Workshop on Hybrid App Development with Ionic Framework
Aayush Shrestha
 
PDF
Hybrid app development with ionic
Wan Muzaffar Wan Hashim
 
PDF
Ionic Crash Course! Hack-a-ton SF
Lukas Ruebbelke
 
PPTX
Intro to Ionic for Building Hybrid Mobile Applications
Sasha dos Santos
 
PDF
Building Mobile Applications with Ionic
Morris Singer
 
KEY
Scaling Teams, Processes and Architectures
Lorenzo Alberton
 
Rethinking Mobile with Ionic
Mike Hartington
 
Effective Communication Of Data Inspired by Stephen Few
Cory Grenier
 
Ionic Framework - get up and running to build hybrid mobile apps
Andreas Sahle
 
Ionic 2 - Hybridapps auf Steroiden
Hendrik Lösch
 
Cordova, Angularjs & Ionic @ Codeaholics
Eddie Lau
 
Workshop Ionic Framework - CC FE & UX
JWORKS powered by Ordina
 
Art and Science of Dashboard Design
SavvyData
 
Hybrid app in ionic framework overview
Sanket Devlekar
 
Desenvolvendo uma aplicação híbrida para Android e IOs utilizando Ionic, aces...
Juliano Martins
 
Hybrid Apps with Ionic Framework
Bramus Van Damme
 
Cross Platform Mobile Apps with the Ionic Framework
Troy Miles
 
Building mobile app with Ionic Framework
Huy Trần
 
Ionic - Revolutionizing Hybrid Mobile Application Development
Justin James
 
Cordova + Ionic + MobileFirst
Raymond Camden
 
Workshop on Hybrid App Development with Ionic Framework
Aayush Shrestha
 
Hybrid app development with ionic
Wan Muzaffar Wan Hashim
 
Ionic Crash Course! Hack-a-ton SF
Lukas Ruebbelke
 
Intro to Ionic for Building Hybrid Mobile Applications
Sasha dos Santos
 
Building Mobile Applications with Ionic
Morris Singer
 
Scaling Teams, Processes and Architectures
Lorenzo Alberton
 
Ad

Similar to Crash Course in AngularJS + Ionic (Deep dive) (20)

PDF
ITB2015 - Crash Course in Ionic + AngularJS
Ortus Solutions, Corp
 
PDF
Developing ionic apps for android and ios
gautham_m79
 
PDF
Cross Platform Mobile Apps with the Ionic Framework
Troy Miles
 
PDF
Tutorial: Develop Mobile Applications with AngularJS
Philipp Burgmer
 
PDF
Ionic Hybrid Mobile Application
Al Sayed Gamal
 
ODP
Desenvolvimento Mobile Híbrido
Juliano Martins
 
PPTX
Mobile Web Apps with AngularJS and Ionic
Loc Nguyen
 
PPTX
Developing Hybrid Applications with IONIC
Fuat Buğra AYDIN
 
PPTX
Angularjs Tutorial for Beginners
rajkamaltibacademy
 
PPTX
Introduction to Ionic framework
Shyjal Raazi
 
PPTX
Hybrid Mobile Development with Apache Cordova,AngularJs and ionic
Ermias Bayu
 
PDF
AngularJS in Production (CTO Forum)
Alex Ross
 
PPTX
AngularJS Introduction (Talk given on Aug 5 2013)
Abhishek Anand
 
PDF
I knew there had to be a better way to build mobile apps
Alius Petraška
 
PDF
Ionic vancouver 201604
Alamusi Alamusi
 
PPTX
Ionic 2 - Introduction
Stiliyan Kanchev
 
PDF
[Ebooks PDF] download AngularJS 1st Edition Brad Green full chapters
kiciunonge
 
PDF
Angular js mobile jsday 2014 - Verona 14 may
Luciano Amodio
 
PDF
Ionic in Action Hybrid Mobile Apps with Ionic and AngularJS 1st Edition Jerem...
becksverrecs
 
ITB2015 - Crash Course in Ionic + AngularJS
Ortus Solutions, Corp
 
Developing ionic apps for android and ios
gautham_m79
 
Cross Platform Mobile Apps with the Ionic Framework
Troy Miles
 
Tutorial: Develop Mobile Applications with AngularJS
Philipp Burgmer
 
Ionic Hybrid Mobile Application
Al Sayed Gamal
 
Desenvolvimento Mobile Híbrido
Juliano Martins
 
Mobile Web Apps with AngularJS and Ionic
Loc Nguyen
 
Developing Hybrid Applications with IONIC
Fuat Buğra AYDIN
 
Angularjs Tutorial for Beginners
rajkamaltibacademy
 
Introduction to Ionic framework
Shyjal Raazi
 
Hybrid Mobile Development with Apache Cordova,AngularJs and ionic
Ermias Bayu
 
AngularJS in Production (CTO Forum)
Alex Ross
 
AngularJS Introduction (Talk given on Aug 5 2013)
Abhishek Anand
 
I knew there had to be a better way to build mobile apps
Alius Petraška
 
Ionic vancouver 201604
Alamusi Alamusi
 
Ionic 2 - Introduction
Stiliyan Kanchev
 
[Ebooks PDF] download AngularJS 1st Edition Brad Green full chapters
kiciunonge
 
Angular js mobile jsday 2014 - Verona 14 may
Luciano Amodio
 
Ionic in Action Hybrid Mobile Apps with Ionic and AngularJS 1st Edition Jerem...
becksverrecs
 
Ad

More from ColdFusionConference (20)

PDF
Api manager preconference
ColdFusionConference
 
PDF
Cf ppt vsr
ColdFusionConference
 
PDF
Building better SQL Server Databases
ColdFusionConference
 
PDF
API Economy, Realizing the Business Value of APIs
ColdFusionConference
 
PDF
Don't just pdf, Smart PDF
ColdFusionConference
 
PDF
Crafting ColdFusion Applications like an Architect
ColdFusionConference
 
PDF
Security And Access Control For APIS using CF API Manager
ColdFusionConference
 
PDF
Monetizing Business Models: ColdFusion and APIS
ColdFusionConference
 
PDF
Become a Security Rockstar with ColdFusion 2016
ColdFusionConference
 
PDF
ColdFusion in Transit action
ColdFusionConference
 
PDF
Developer Insights for Application Upgrade to ColdFusion 2016
ColdFusionConference
 
PDF
Where is cold fusion headed
ColdFusionConference
 
PDF
ColdFusion Keynote: Building the Agile Web Since 1995
ColdFusionConference
 
PDF
Instant ColdFusion with Vagrant
ColdFusionConference
 
PPT
Restful services with ColdFusion
ColdFusionConference
 
PDF
Super Fast Application development with Mura CMS
ColdFusionConference
 
PDF
Build your own secure and real-time dashboard for mobile and web
ColdFusionConference
 
PDF
Why Everyone else writes bad code
ColdFusionConference
 
PDF
Securing applications
ColdFusionConference
 
PDF
Testing automaton
ColdFusionConference
 
Api manager preconference
ColdFusionConference
 
Building better SQL Server Databases
ColdFusionConference
 
API Economy, Realizing the Business Value of APIs
ColdFusionConference
 
Don't just pdf, Smart PDF
ColdFusionConference
 
Crafting ColdFusion Applications like an Architect
ColdFusionConference
 
Security And Access Control For APIS using CF API Manager
ColdFusionConference
 
Monetizing Business Models: ColdFusion and APIS
ColdFusionConference
 
Become a Security Rockstar with ColdFusion 2016
ColdFusionConference
 
ColdFusion in Transit action
ColdFusionConference
 
Developer Insights for Application Upgrade to ColdFusion 2016
ColdFusionConference
 
Where is cold fusion headed
ColdFusionConference
 
ColdFusion Keynote: Building the Agile Web Since 1995
ColdFusionConference
 
Instant ColdFusion with Vagrant
ColdFusionConference
 
Restful services with ColdFusion
ColdFusionConference
 
Super Fast Application development with Mura CMS
ColdFusionConference
 
Build your own secure and real-time dashboard for mobile and web
ColdFusionConference
 
Why Everyone else writes bad code
ColdFusionConference
 
Securing applications
ColdFusionConference
 
Testing automaton
ColdFusionConference
 

Recently uploaded (20)

PPT
Ericsson LTE presentation SEMINAR 2010.ppt
npat3
 
PDF
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
PPTX
Seamless Tech Experiences Showcasing Cross-Platform App Design.pptx
presentifyai
 
PDF
Automating Feature Enrichment and Station Creation in Natural Gas Utility Net...
Safe Software
 
PDF
Go Concurrency Real-World Patterns, Pitfalls, and Playground Battles.pdf
Emily Achieng
 
PDF
The 2025 InfraRed Report - Redpoint Ventures
Razin Mustafiz
 
PDF
AI Agents in the Cloud: The Rise of Agentic Cloud Architecture
Lilly Gracia
 
PDF
Book industry state of the nation 2025 - Tech Forum 2025
BookNet Canada
 
PPTX
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
PDF
“Squinting Vision Pipelines: Detecting and Correcting Errors in Vision Models...
Edge AI and Vision Alliance
 
PDF
Kit-Works Team Study_20250627_한달만에만든사내서비스키링(양다윗).pdf
Wonjun Hwang
 
PPTX
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
PPTX
Mastering ODC + Okta Configuration - Chennai OSUG
HathiMaryA
 
PPTX
AI Penetration Testing Essentials: A Cybersecurity Guide for 2025
defencerabbit Team
 
PDF
Future-Proof or Fall Behind? 10 Tech Trends You Can’t Afford to Ignore in 2025
DIGITALCONFEX
 
PDF
Peak of Data & AI Encore AI-Enhanced Workflows for the Real World
Safe Software
 
PPTX
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
PDF
How do you fast track Agentic automation use cases discovery?
DianaGray10
 
PDF
“Computer Vision at Sea: Automated Fish Tracking for Sustainable Fishing,” a ...
Edge AI and Vision Alliance
 
PDF
Mastering Financial Management in Direct Selling
Epixel MLM Software
 
Ericsson LTE presentation SEMINAR 2010.ppt
npat3
 
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
Seamless Tech Experiences Showcasing Cross-Platform App Design.pptx
presentifyai
 
Automating Feature Enrichment and Station Creation in Natural Gas Utility Net...
Safe Software
 
Go Concurrency Real-World Patterns, Pitfalls, and Playground Battles.pdf
Emily Achieng
 
The 2025 InfraRed Report - Redpoint Ventures
Razin Mustafiz
 
AI Agents in the Cloud: The Rise of Agentic Cloud Architecture
Lilly Gracia
 
Book industry state of the nation 2025 - Tech Forum 2025
BookNet Canada
 
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
“Squinting Vision Pipelines: Detecting and Correcting Errors in Vision Models...
Edge AI and Vision Alliance
 
Kit-Works Team Study_20250627_한달만에만든사내서비스키링(양다윗).pdf
Wonjun Hwang
 
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
Mastering ODC + Okta Configuration - Chennai OSUG
HathiMaryA
 
AI Penetration Testing Essentials: A Cybersecurity Guide for 2025
defencerabbit Team
 
Future-Proof or Fall Behind? 10 Tech Trends You Can’t Afford to Ignore in 2025
DIGITALCONFEX
 
Peak of Data & AI Encore AI-Enhanced Workflows for the Real World
Safe Software
 
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
How do you fast track Agentic automation use cases discovery?
DianaGray10
 
“Computer Vision at Sea: Automated Fish Tracking for Sustainable Fishing,” a ...
Edge AI and Vision Alliance
 
Mastering Financial Management in Direct Selling
Epixel MLM Software
 

Crash Course in AngularJS + Ionic (Deep dive)

  • 1. Crash Course in AngularJS + Ionic (Deep dive) Nolan Erck (with assistance from Scott Steinbeck)
  • 2. About Me ● Chief Consultant / Owner, South of Shasta Consulting – Software Development, Training, Design. ● Using ColdFusion since 1999 (4.x) ● Other stuff: C++, Java, jQuery, PHP, .NET, HTML5, Android, you get the idea... ● Manager of SacInteractive User Group. ● Reformed Video Game Developer (Grim Fandango, SimPark, StarWars Rogue Squadron, etc). ● Music Junkie.
  • 6. Today's Agenda ● Intro to MVC ● Intro to AngularJS – Some basic features, concepts and code samples. ● [break time] ● Intro to Ionic – More features, code samples, simulator, etc. ● Other resources. ● Questions.
  • 7. Prerequisites ● Good understanding of “modern” JavaScript. – Scopes, anonymous functions, classes, objects. ● Previous MVC experience is helpful but not req'd. ● You'll also get exposed to: – Node.js, PhoneGap/Cordova, mobile SDKs (Android, Xcode, etc). ● And 1 more thing you need to know...
  • 8. Prerequisites ● Know that... – Object Oriented Programming is hard. – This “hybrid mobile” stuff is different than what you may be used to. – And some of it is confusing at first. ● And that's NORMAL.
  • 9. We're using Angular 1.x ● AngularJS 1.x is released. ● AngularJS 2.x is technically still in beta. – Moving target – Really different than 1.x – Bigger learning curve ● Transpiling (boo, hiss) ● TypeScript – Lots of smart people at this conference to ask about 2.x features.
  • 10. How do I get started? ● Easy! ● https://angularjs.org/ ● Click “download”. – (npm and bower options available too) ● Angular.js is all you need to start. – (Additional JS files for fancier features. We'll get to that later.)
  • 11. How do I get started? ● <script src=”angular.js”></script> ● <html ng-app> ● {{variable name / expression}} ● [DEMO – Hello World]
  • 12. What is MVC? ● Model View Controller ● Design Pattern ● Splits your app up into 3 logical sections. – Model – where your data and related logic goes. – View – the parts of your app you “view” (HTML, CSS). – Controller – determines what happens next in the app (some business logic maybe too). ● The “restaurant” analogy.
  • 13. The “Model” ● Short for “data model” (kind of) ● Where your data lives ● Can be a local JS variable, localStorage, REST API, some other ajax request, etc. ● The app doesn't care ● Restaurant: the kitchen [DEMO - Model]
  • 14. The “View” ● The part of the app you “view”. – HTML, CSS, JavaScript <html> <body> this part here is the “view” </body> </html> ● Restaurant: the menu and plates of food
  • 15. The “Controller” ● Controls what happens next. – Send info to the model. – Update the View with an error/success message. – Move the User to a new section of the app. – Etc. ● Restaurant: the waiter. ● AngularJS: $scope ● $scope is the waiter [DEMO - Controller]
  • 16. MVC – All Together Model - data - localStorage - bus. Logic - etc Controller - route user from point a to point b - route user back to point a if Model said something was missing View - HTML - CSS - jQuery - Bootstrap - etc.
  • 17. What is AngularJS? ● MVC framework for JavaScript SPAs. ● Very few moving parts to get started. – Include 1 JS file, add “ng-app” to your HTML, done! ● Some nice features. – Dependency Injection – Routes – 2-way Data Binding – Various other things...
  • 18. Single Page Application (SPA) ● Instead of contact.html, about.html, products.html ● You have these guys: – Sitename.com/#/contact – Sitename.com/#/products ● The whole site is routed through index.html via some internal machinery. ● Entire site is downloaded at once, then accessed via the browser cache. ● Only new data is retrieved from the server.
  • 19. Looping ● In Controller / Model – Standard JavaScript for( i = 0; i < 5; i++ ) { … } – angular.forEach() var values = { name: 'Martin Gore', instrument: 'guitar' }; var log = []; angular.forEach(values, function(value, key) { this.push(key + ': ' + value); } );
  • 20. Looping ● In View – ng-repeat ● <div data-ng-repeat="i in [1,2,3,4,5]"> ● <div data-ng-repeat="item in aryGroceries"> [DEMO - Looping]
  • 21. Filters ● Select a subset of items from an array. ● When you don't want to loop over all the elements in a given array. ● Like a built-in if() statement. – For sorting data on the fly. ● [DEMO - Filters]
  • 22. Routes ● URLs in an Angular app look like so: – /index.html#/home ● Everything is loaded via index.html ● Each #section as it's own “view” that's dynamically injected as the app is running. [DEMO - Routes]
  • 23. Getting data via AJAX ● $http.get() method – Performs HTTP GET to retrieve data in JSON form. – Could be a local file, REST, anything that returns JSON. [DEMO - JSONdata]
  • 24. Custom Directives ● Basically custom tags written in AngularJS. – <my-custom-widget /> ● Works just like regular HTML tags. ● Similar to Polymer. ● Like extended tags in HTML5, or custom tags in ColdFusion. ● Can be custom “tags”, “classes” or “attributes”. [Demo - Directives]
  • 25. Services ● AKA modules, utility libraries, etc ● Wired together using Dependency Injection ● “$name” for built-in core Angular services – $http, $resource, etc ● “name” for user-developed services – MusicianService, etc
  • 26. ...and that's AngularJS ● That (in an extreme nutshell) is AngularJS. – (There are LOTS more features we didn't cover.) ● Can be used by itself for SPA web apps. ● Not mobile-specific. ● Break time, then on to Ionic...
  • 27. Ionic ● Hybrid mobile app platform ● iOS and Android in 1 codebase ● JavaScript, HTML, CSS ● No Swift, Objective-C, Java (Android)
  • 28. Ionic ● Uses PhoneGap (aka Cordova) – HTML, CSS, JavaScript gets compiled – Combined with a WebView control – Code → WebView (chrome-less browser) – Packaged into an app ● iPhone binary, Android APK file. – The device is “running an app, that happens to be a web browser”.
  • 29. Ionic ● Is (essentially) mobile-specific. ● Sits on top of PhoneGap and Angular. ● Built on Angular's “Directives” and “Services”. ● Also uses PhoneGap's “magic”. ● Gives a Bootstrap-esque set of functionality for hybrid mobile apps.
  • 30. Ionic ● Performance “obsessed”. – Minimal DOM manipulation – Removed 300ms tap delay – Etc ● Lots of other neat features. ● We'll barely scratch the surface today.
  • 31. Ionic – Getting Started ● Need Node.js, Ionic packages, Cordova packages. ● If building apps locally, need Android and iPhone SDKs (or use PhoneGapBuild). ● Initial installation can be a bit of a pain. – Especially if you don't run bleeding edge OS, dev tools, etc.
  • 32. Ionic – Getting Started ● To start: – ionic start my-app [blank] – Generates all files needed to start an app. – “blank” is the template name. Several to pick from, we're starting with a bare-bones app. [DEMO 1] – ionic start my-app tabs – [DEMO 2] – ionic start my-app sidemenu – [DEMO 3]
  • 33. Project Structure Bower, Gulp, etc – build things (optional) /www – main code folder /scss – Optional SASS things /plugins – Cordova / PhoneGap Plugins
  • 34. Let's Make An App! ● Warning: – Live coding about to happen! – Dependency on the wifi about to happen! – Please stop streaming cat videos on YouTube for the next few minutes. – Thanks. :) [DEMO ionic start DevObjective2016 tabs]
  • 35. Project Structure – www folder /css – empty by default /img – Auto-resized by ionic build /js – My code for the app /lib – JS libraries, angular, ionic – Ionic CSS, SVG fonts, etc /templates – My views for the app
  • 36. Project Structure ● <ion-*> tags ● Technically Angular directives and services under the hood. ● The stuff that looks like Angular is Angular. ● The <ion-*> tags are the Ionic part. ● All the AngularJS you already know works the exact same way! [DEMO 4] [DEMO 5]
  • 37. Project Structure ● Lots of CSS classes ● Very Bootstrap-esque – Add class or classes to HTML tags for most of the base functionality.
  • 38. Code Samples ● Header and Subheader <div class="bar bar-header"> <h1 class="title">Header</h1> </div> <div class="bar bar-subheader"> <h2 class="title">Sub Header</h2> </div>
  • 39. Code Samples ● Buttons <button class="button"> Default </button> <button class="button button-light"> Cancel </button> <button class="button button-positive"> Save </button>
  • 40. Code Samples ● Lists <div class="list"> <div class="item item-divider"> Guitar Players </div> <a class="item" href="#"> Steve Vai </a> <a class="item" href="#"> Eric Johnson </a> <a class="item" href="#"> Stanley Jordan </a> </div>
  • 41. Code Samples ● Cards <ion-content> <div class="card"> <div class="item item-text-wrap"> Card content goes here. </div> </div> </ion-content> [DEMO - cards]
  • 42. Code Samples – Form Controls
  • 43. Code Samples – Form Controls
  • 44. Form Controls - Checkboxes <ion-list> <ion-checkbox ng-model="power.flux">Flux Capacitor </ion-checkbox> <ion-checkbox ng-model="power.gigawatt"> 1.21 Gigawatts</ion-checkbox> <ion-checkbox ng-model="power.delorean"> Delorean</ion-checkbox> </ion-list>
  • 46. Grid Layout Based on FlexBox Add a column and Ionic will figure out the “layout math” for you.
  • 47. And lots more! ● Utility classes – Colors, icons, padding – Platform-specific classes ● Style iPhone differently than Android, etc ● User created add-ons ● Plugins
  • 48. Testing Your App ● ionic serve – Runs in the browser ● ionic serve -- lab – Examples of iOS and Android layouts ● Code is sync'd – No reloading the browser needed ● ionic emulate iOS – Starts up the iOS simulator
  • 49. Testing Your App ● Ionic View – http://view.ionic.io/ – Easy private Beta testing – No iPhone Developer License needed – No “registering devices with Apple” needed – Install Ionic View app, add the serial #, done. [DEMO – Ionic View upload, install]
  • 50. Publishing Your App ● Same as any other mobile app – Google Play Store (Android) ● Make your APK and submit it – Apple App Store ● Jump thru all of Apple's hoops ● Subject yourself to their pain ● Build.phonegap.com – Helps with build process – Still have to deal with Apple's submission process. No way around that.
  • 51. What's the catch? ● Same as any PhoneGap/Cordova project. ● Need to install the SDKs for each platform. – Takes time, hassles, etc. – Android isn't super intuitive – iOS requires Xcode, latest OSX, etc.
  • 52. Other Resources ● AngularJS.org ● Book “Pro AngularJS” ● Book “PhoneGap Mobile Application Development Cookbook” – Matt Gifford ● IonicFramework.com ● Ionic Creator IDE ● Ionic View – easy “private QA” app ● Ray Camden's Ionic preso from CF.Objective last year.
  • 53. Questions? Comments? ● Ways to reach me: – Southofshasta.com – [email protected] – Twitter @southofshasta Free music trivia instead of swag giveaways. You're welcome. (Thanks again to Scott Steinbeck for assistance!) Thanks!
  • 54. Crash Course in AngularJS + Ionic (Deep dive) Nolan Erck (with assistance from Scott Steinbeck)
  • 55. About Me ● Chief Consultant / Owner, South of Shasta Consulting – Software Development, Training, Design. ● Using ColdFusion since 1999 (4.x) ● Other stuff: C++, Java, jQuery, PHP, .NET, HTML5, Android, you get the idea... ● Manager of SacInteractive User Group. ● Reformed Video Game Developer (Grim Fandango, SimPark, StarWars Rogue Squadron, etc). ● Music Junkie.
  • 59. Today's Agenda ● Intro to MVC ● Intro to AngularJS – Some basic features, concepts and code samples. ● [break time] ● Intro to Ionic – More features, code samples, simulator, etc. ● Other resources. ● Questions.
  • 60. Prerequisites ● Good understanding of “modern” JavaScript. – Scopes, anonymous functions, classes, objects. ● Previous MVC experience is helpful but not req'd. ● You'll also get exposed to: – Node.js, PhoneGap/Cordova, mobile SDKs (Android, Xcode, etc). ● And 1 more thing you need to know...
  • 61. Prerequisites ● Know that... – Object Oriented Programming is hard. – This “hybrid mobile” stuff is different than what you may be used to. – And some of it is confusing at first. ● And that's NORMAL.
  • 62. We're using Angular 1.x ● AngularJS 1.x is released. ● AngularJS 2.x is technically still in beta. – Moving target – Really different than 1.x – Bigger learning curve ● Transpiling (boo, hiss) ● TypeScript – Lots of smart people at this conference to ask about 2.x features.
  • 63. How do I get started? ● Easy! ● https://angularjs.org/ ● Click “download”. – (npm and bower options available too) ● Angular.js is all you need to start. – (Additional JS files for fancier features. We'll get to that later.)
  • 64. How do I get started? ● <script src=”angular.js”></script> ● <html ng-app> ● {{variable name / expression}} ● [DEMO – Hello World]
  • 65. What is MVC? ● Model View Controller ● Design Pattern ● Splits your app up into 3 logical sections. – Model – where your data and related logic goes. – View – the parts of your app you “view” (HTML, CSS). – Controller – determines what happens next in the app (some business logic maybe too). ● The “restaurant” analogy.
  • 66. The “Model” ● Short for “data model” (kind of) ● Where your data lives ● Can be a local JS variable, localStorage, REST API, some other ajax request, etc. ● The app doesn't care ● Restaurant: the kitchen [DEMO - Model]
  • 67. The “View” ● The part of the app you “view”. – HTML, CSS, JavaScript <html> <body> this part here is the “view” </body> </html> ● Restaurant: the menu and plates of food
  • 68. The “Controller” ● Controls what happens next. – Send info to the model. – Update the View with an error/success message. – Move the User to a new section of the app. – Etc. ● Restaurant: the waiter. ● AngularJS: $scope ● $scope is the waiter [DEMO - Controller]
  • 69. MVC – All Together Model - data - localStorage - bus. Logic - etc Controller - route user from point a to point b - route user back to point a if Model said something was missing View - HTML - CSS - jQuery - Bootstrap - etc.
  • 70. What is AngularJS? ● MVC framework for JavaScript SPAs. ● Very few moving parts to get started. – Include 1 JS file, add “ng-app” to your HTML, done! ● Some nice features. – Dependency Injection – Routes – 2-way Data Binding – Various other things...
  • 71. Single Page Application (SPA) ● Instead of contact.html, about.html, products.html ● You have these guys: – Sitename.com/#/contact – Sitename.com/#/products ● The whole site is routed through index.html via some internal machinery. ● Entire site is downloaded at once, then accessed via the browser cache. ● Only new data is retrieved from the server.
  • 72. Looping ● In Controller / Model – Standard JavaScript for( i = 0; i < 5; i++ ) { … } – angular.forEach() var values = { name: 'Martin Gore', instrument: 'guitar' }; var log = []; angular.forEach(values, function(value, key) { this.push(key + ': ' + value); } );
  • 73. Looping ● In View – ng-repeat ● <div data-ng-repeat="i in [1,2,3,4,5]"> ● <div data-ng-repeat="item in aryGroceries"> [DEMO - Looping]
  • 74. Filters ● Select a subset of items from an array. ● When you don't want to loop over all the elements in a given array. ● Like a built-in if() statement. – For sorting data on the fly. ● [DEMO - Filters]
  • 75. Routes ● URLs in an Angular app look like so: – /index.html#/home ● Everything is loaded via index.html ● Each #section as it's own “view” that's dynamically injected as the app is running. [DEMO - Routes]
  • 76. Getting data via AJAX ● $http.get() method – Performs HTTP GET to retrieve data in JSON form. – Could be a local file, REST, anything that returns JSON. [DEMO - JSONdata]
  • 77. Custom Directives ● Basically custom tags written in AngularJS. – <my-custom-widget /> ● Works just like regular HTML tags. ● Similar to Polymer. ● Like extended tags in HTML5, or custom tags in ColdFusion. ● Can be custom “tags”, “classes” or “attributes”. [Demo - Directives]
  • 78. Services ● AKA modules, utility libraries, etc ● Wired together using Dependency Injection ● “$name” for built-in core Angular services – $http, $resource, etc ● “name” for user-developed services – MusicianService, etc
  • 79. ...and that's AngularJS ● That (in an extreme nutshell) is AngularJS. – (There are LOTS more features we didn't cover.) ● Can be used by itself for SPA web apps. ● Not mobile-specific. ● Break time, then on to Ionic...
  • 80. Ionic ● Hybrid mobile app platform ● iOS and Android in 1 codebase ● JavaScript, HTML, CSS ● No Swift, Objective-C, Java (Android)
  • 81. Ionic ● Uses PhoneGap (aka Cordova) – HTML, CSS, JavaScript gets compiled – Combined with a WebView control – Code → WebView (chrome-less browser) – Packaged into an app ● iPhone binary, Android APK file. – The device is “running an app, that happens to be a web browser”.
  • 82. Ionic ● Is (essentially) mobile-specific. ● Sits on top of PhoneGap and Angular. ● Built on Angular's “Directives” and “Services”. ● Also uses PhoneGap's “magic”. ● Gives a Bootstrap-esque set of functionality for hybrid mobile apps.
  • 83. Ionic ● Performance “obsessed”. – Minimal DOM manipulation – Removed 300ms tap delay – Etc ● Lots of other neat features. ● We'll barely scratch the surface today.
  • 84. Ionic – Getting Started ● Need Node.js, Ionic packages, Cordova packages. ● If building apps locally, need Android and iPhone SDKs (or use PhoneGapBuild). ● Initial installation can be a bit of a pain. – Especially if you don't run bleeding edge OS, dev tools, etc.
  • 85. Ionic – Getting Started ● To start: – ionic start my-app [blank] – Generates all files needed to start an app. – “blank” is the template name. Several to pick from, we're starting with a bare-bones app. [DEMO 1] – ionic start my-app tabs – [DEMO 2] – ionic start my-app sidemenu – [DEMO 3]
  • 86. Project Structure Bower, Gulp, etc – build things (optional) /www – main code folder /scss – Optional SASS things /plugins – Cordova / PhoneGap Plugins
  • 87. Let's Make An App! ● Warning: – Live coding about to happen! – Dependency on the wifi about to happen! – Please stop streaming cat videos on YouTube for the next few minutes. – Thanks. :) [DEMO ionic start DevObjective2016 tabs]
  • 88. Project Structure – www folder /css – empty by default /img – Auto-resized by ionic build /js – My code for the app /lib – JS libraries, angular, ionic – Ionic CSS, SVG fonts, etc /templates – My views for the app
  • 89. Project Structure ● <ion-*> tags ● Technically Angular directives and services under the hood. ● The stuff that looks like Angular is Angular. ● The <ion-*> tags are the Ionic part. ● All the AngularJS you already know works the exact same way! [DEMO 4] [DEMO 5]
  • 90. Project Structure ● Lots of CSS classes ● Very Bootstrap-esque – Add class or classes to HTML tags for most of the base functionality.
  • 91. Code Samples ● Header and Subheader <div class="bar bar-header"> <h1 class="title">Header</h1> </div> <div class="bar bar-subheader"> <h2 class="title">Sub Header</h2> </div>
  • 92. Code Samples ● Buttons <button class="button"> Default </button> <button class="button button-light"> Cancel </button> <button class="button button-positive"> Save </button>
  • 93. Code Samples ● Lists <div class="list"> <div class="item item-divider"> Guitar Players </div> <a class="item" href="#"> Steve Vai </a> <a class="item" href="#"> Eric Johnson </a> <a class="item" href="#"> Stanley Jordan </a> </div>
  • 94. Code Samples ● Cards <ion-content> <div class="card"> <div class="item item-text-wrap"> Card content goes here. </div> </div> </ion-content> [DEMO - cards]
  • 95. Code Samples – Form Controls
  • 96. Code Samples – Form Controls
  • 97. Form Controls - Checkboxes <ion-list> <ion-checkbox ng-model="power.flux">Flux Capacitor </ion-checkbox> <ion-checkbox ng-model="power.gigawatt"> 1.21 Gigawatts</ion-checkbox> <ion-checkbox ng-model="power.delorean"> Delorean</ion-checkbox> </ion-list>
  • 99. Grid Layout Based on FlexBox Add a column and Ionic will figure out the “layout math” for you.
  • 100. And lots more! ● Utility classes – Colors, icons, padding – Platform-specific classes ● Style iPhone differently than Android, etc ● User created add-ons ● Plugins
  • 101. Testing Your App ● ionic serve – Runs in the browser ● ionic serve -- lab – Examples of iOS and Android layouts ● Code is sync'd – No reloading the browser needed ● ionic emulate iOS – Starts up the iOS simulator
  • 102. Testing Your App ● Ionic View – http://view.ionic.io/ – Easy private Beta testing – No iPhone Developer License needed – No “registering devices with Apple” needed – Install Ionic View app, add the serial #, done. [DEMO – Ionic View upload, install]
  • 103. Publishing Your App ● Same as any other mobile app – Google Play Store (Android) ● Make your APK and submit it – Apple App Store ● Jump thru all of Apple's hoops ● Subject yourself to their pain ● Build.phonegap.com – Helps with build process – Still have to deal with Apple's submission process. No way around that.
  • 104. What's the catch? ● Same as any PhoneGap/Cordova project. ● Need to install the SDKs for each platform. – Takes time, hassles, etc. – Android isn't super intuitive – iOS requires Xcode, latest OSX, etc.
  • 105. Other Resources ● AngularJS.org ● Book “Pro AngularJS” ● Book “PhoneGap Mobile Application Development Cookbook” – Matt Gifford ● IonicFramework.com ● Ionic Creator IDE ● Ionic View – easy “private QA” app ● Ray Camden's Ionic preso from CF.Objective last year.
  • 106. Questions? Comments? ● Ways to reach me: – Southofshasta.com – [email protected] – Twitter @southofshasta Free music trivia instead of swag giveaways. You're welcome. (Thanks again to Scott Steinbeck for assistance!) Thanks!