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)

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

Viewers also liked (20)

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

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

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

More from ColdFusionConference (20)

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

Recently uploaded (20)

7 Salesforce Data Cloud Best Practices.pdf
7 Salesforce Data Cloud Best Practices.pdf
Minuscule Technologies
 
Dancing with AI - A Developer's Journey.pptx
Dancing with AI - A Developer's Journey.pptx
Elliott Richmond
 
vertical-cnc-processing-centers-drillteq-v-200-en.pdf
vertical-cnc-processing-centers-drillteq-v-200-en.pdf
AmirStern2
 
Establish Visibility and Manage Risk in the Supply Chain with Anchore SBOM
Establish Visibility and Manage Risk in the Supply Chain with Anchore SBOM
Anchore
 
How Advanced Environmental Detection Is Revolutionizing Oil & Gas Safety.pdf
How Advanced Environmental Detection Is Revolutionizing Oil & Gas Safety.pdf
Rejig Digital
 
Integration of Utility Data into 3D BIM Models Using a 3D Solids Modeling Wor...
Integration of Utility Data into 3D BIM Models Using a 3D Solids Modeling Wor...
Safe Software
 
AI Agents in Logistics and Supply Chain Applications Benefits and Implementation
AI Agents in Logistics and Supply Chain Applications Benefits and Implementation
Christine Shepherd
 
“How Qualcomm Is Powering AI-driven Multimedia at the Edge,” a Presentation f...
“How Qualcomm Is Powering AI-driven Multimedia at the Edge,” a Presentation f...
Edge AI and Vision Alliance
 
Bridging the divide: A conversation on tariffs today in the book industry - T...
Bridging the divide: A conversation on tariffs today in the book industry - T...
BookNet Canada
 
ISOIEC 42005 Revolutionalises AI Impact Assessment.pptx
ISOIEC 42005 Revolutionalises AI Impact Assessment.pptx
AyilurRamnath1
 
Agentic AI: Beyond the Buzz- LangGraph Studio V2
Agentic AI: Beyond the Buzz- LangGraph Studio V2
Shashikant Jagtap
 
What is Oracle EPM A Guide to Oracle EPM Cloud Everything You Need to Know
What is Oracle EPM A Guide to Oracle EPM Cloud Everything You Need to Know
SMACT Works
 
Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...
Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...
Anish Kumar
 
Creating an Accessible Future-How AI-powered Accessibility Testing is Shaping...
Creating an Accessible Future-How AI-powered Accessibility Testing is Shaping...
Impelsys Inc.
 
Data Virtualization: Bringing the Power of FME to Any Application
Data Virtualization: Bringing the Power of FME to Any Application
Safe Software
 
cnc-drilling-dowel-inserting-machine-drillteq-d-510-english.pdf
cnc-drilling-dowel-inserting-machine-drillteq-d-510-english.pdf
AmirStern2
 
FCF- Getting Started in Cybersecurity 3.0
FCF- Getting Started in Cybersecurity 3.0
RodrigoMori7
 
Your startup on AWS - How to architect and maintain a Lean and Mean account J...
Your startup on AWS - How to architect and maintain a Lean and Mean account J...
angelo60207
 
Jeremy Millul - A Talented Software Developer
Jeremy Millul - A Talented Software Developer
Jeremy Millul
 
Soulmaite review - Find Real AI soulmate review
Soulmaite review - Find Real AI soulmate review
Soulmaite
 
7 Salesforce Data Cloud Best Practices.pdf
7 Salesforce Data Cloud Best Practices.pdf
Minuscule Technologies
 
Dancing with AI - A Developer's Journey.pptx
Dancing with AI - A Developer's Journey.pptx
Elliott Richmond
 
vertical-cnc-processing-centers-drillteq-v-200-en.pdf
vertical-cnc-processing-centers-drillteq-v-200-en.pdf
AmirStern2
 
Establish Visibility and Manage Risk in the Supply Chain with Anchore SBOM
Establish Visibility and Manage Risk in the Supply Chain with Anchore SBOM
Anchore
 
How Advanced Environmental Detection Is Revolutionizing Oil & Gas Safety.pdf
How Advanced Environmental Detection Is Revolutionizing Oil & Gas Safety.pdf
Rejig Digital
 
Integration of Utility Data into 3D BIM Models Using a 3D Solids Modeling Wor...
Integration of Utility Data into 3D BIM Models Using a 3D Solids Modeling Wor...
Safe Software
 
AI Agents in Logistics and Supply Chain Applications Benefits and Implementation
AI Agents in Logistics and Supply Chain Applications Benefits and Implementation
Christine Shepherd
 
“How Qualcomm Is Powering AI-driven Multimedia at the Edge,” a Presentation f...
“How Qualcomm Is Powering AI-driven Multimedia at the Edge,” a Presentation f...
Edge AI and Vision Alliance
 
Bridging the divide: A conversation on tariffs today in the book industry - T...
Bridging the divide: A conversation on tariffs today in the book industry - T...
BookNet Canada
 
ISOIEC 42005 Revolutionalises AI Impact Assessment.pptx
ISOIEC 42005 Revolutionalises AI Impact Assessment.pptx
AyilurRamnath1
 
Agentic AI: Beyond the Buzz- LangGraph Studio V2
Agentic AI: Beyond the Buzz- LangGraph Studio V2
Shashikant Jagtap
 
What is Oracle EPM A Guide to Oracle EPM Cloud Everything You Need to Know
What is Oracle EPM A Guide to Oracle EPM Cloud Everything You Need to Know
SMACT Works
 
Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...
Scaling GenAI Inference From Prototype to Production: Real-World Lessons in S...
Anish Kumar
 
Creating an Accessible Future-How AI-powered Accessibility Testing is Shaping...
Creating an Accessible Future-How AI-powered Accessibility Testing is Shaping...
Impelsys Inc.
 
Data Virtualization: Bringing the Power of FME to Any Application
Data Virtualization: Bringing the Power of FME to Any Application
Safe Software
 
cnc-drilling-dowel-inserting-machine-drillteq-d-510-english.pdf
cnc-drilling-dowel-inserting-machine-drillteq-d-510-english.pdf
AmirStern2
 
FCF- Getting Started in Cybersecurity 3.0
FCF- Getting Started in Cybersecurity 3.0
RodrigoMori7
 
Your startup on AWS - How to architect and maintain a Lean and Mean account J...
Your startup on AWS - How to architect and maintain a Lean and Mean account J...
angelo60207
 
Jeremy Millul - A Talented Software Developer
Jeremy Millul - A Talented Software Developer
Jeremy Millul
 
Soulmaite review - Find Real AI soulmate review
Soulmaite review - Find Real AI soulmate review
Soulmaite
 

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!