SlideShare a Scribd company logo
1 of 106
Download to read offline
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.
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.
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

Developing, building, testing and deploying react native apps
Developing, building, testing and deploying react native appsDeveloping, building, testing and deploying react native apps
Developing, building, testing and deploying react native appsLeena N
 
jQuery Proven Performance Tips & Tricks
jQuery Proven Performance Tips & TricksjQuery Proven Performance Tips & Tricks
jQuery Proven Performance Tips & TricksAddy Osmani
 
The Complementarity of React and Web Components
The Complementarity of React and Web ComponentsThe Complementarity of React and Web Components
The Complementarity of React and Web ComponentsAndrew Rota
 
Алексей Швайка "Bundling: you are doing it wrong"
Алексей Швайка "Bundling: you are doing it wrong"Алексей Швайка "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 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 sideNode.js and Selenium Webdriver, a journey from the Java side
Node.js and Selenium Webdriver, a journey from the Java sideMek Srunyu Stittri
 
APIs: A Better Alternative to Page Objects
APIs: A Better Alternative to Page ObjectsAPIs: A Better Alternative to Page Objects
APIs: A Better Alternative to Page ObjectsSauce Labs
 
Plugin Development @ WordCamp Norway 2014
Plugin Development @ WordCamp Norway 2014Plugin Development @ WordCamp Norway 2014
Plugin Development @ WordCamp Norway 2014Barry Kooij
 
Nightwatch at Tilt
Nightwatch at TiltNightwatch at Tilt
Nightwatch at TiltDave King
 
A Debugging Adventure: Journey through Ember.js Glue
A Debugging Adventure: Journey through Ember.js GlueA Debugging Adventure: Journey through Ember.js Glue
A Debugging Adventure: Journey through Ember.js GlueMike North
 
[Srijan Wednesday Webinars] Developing Large Scale Applications in AngularJS
[Srijan Wednesday Webinars] Developing Large Scale Applications in AngularJS[Srijan Wednesday Webinars] Developing Large Scale Applications in AngularJS
[Srijan Wednesday Webinars] Developing Large Scale Applications in AngularJSSrijan Technologies
 
Web sockets in Angular
Web sockets in AngularWeb sockets in Angular
Web sockets in AngularYakov Fain
 
Bdd with Cucumber and Mocha
Bdd with Cucumber and MochaBdd with Cucumber and Mocha
Bdd with Cucumber and MochaAtish Narlawar
 
Fullstack End-to-end test automation with Node.js, one year later
Fullstack End-to-end test automation with Node.js, one year laterFullstack End-to-end test automation with Node.js, one year later
Fullstack End-to-end test automation with Node.js, one year laterMek Srunyu Stittri
 
Behavior Driven Development and Automation Testing Using Cucumber
Behavior Driven Development and Automation Testing Using CucumberBehavior Driven Development and Automation Testing Using Cucumber
Behavior Driven Development and Automation Testing Using CucumberKMS Technology
 
Spring Day | WaveMaker - Spring Roo - SpringSource Tool Suite: Choosing the R...
Spring Day | WaveMaker - Spring Roo - SpringSource Tool Suite: Choosing the R...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 exampleLaravel 8 export data as excel file with example
Laravel 8 export data as excel file with exampleKaty Slemon
 
BDD in Java using Cucumber
BDD in Java using CucumberBDD in Java using Cucumber
BDD in Java using Cucumberslavkurochkin
 

What's hot (20)

Developing, building, testing and deploying react native apps
Developing, building, testing and deploying react native appsDeveloping, building, testing and deploying react native apps
Developing, building, testing and deploying react native apps
 
jQuery Proven Performance Tips & Tricks
jQuery Proven Performance Tips & TricksjQuery Proven Performance Tips & Tricks
jQuery Proven Performance Tips & Tricks
 
React native
React nativeReact native
React native
 
The Complementarity of React and Web Components
The Complementarity of React and Web ComponentsThe Complementarity of React and Web Components
The Complementarity of React and Web Components
 
Алексей Швайка "Bundling: you are doing it wrong"
Алексей Швайка "Bundling: you are doing it wrong"Алексей Швайка "Bundling: you are doing it wrong"
Алексей Швайка "Bundling: you are doing it wrong"
 
Anatomy of a Modern Node.js Application Architecture
Anatomy of a Modern Node.js Application Architecture Anatomy of a Modern Node.js Application Architecture
Anatomy of a Modern Node.js Application Architecture
 
Node.js and Selenium Webdriver, a journey from the Java side
Node.js and Selenium Webdriver, a journey from the Java sideNode.js and Selenium Webdriver, a journey from the Java side
Node.js and Selenium Webdriver, a journey from the Java side
 
Angular js
Angular jsAngular js
Angular js
 
APIs: A Better Alternative to Page Objects
APIs: A Better Alternative to Page ObjectsAPIs: A Better Alternative to Page Objects
APIs: A Better Alternative to Page Objects
 
Plugin Development @ WordCamp Norway 2014
Plugin Development @ WordCamp Norway 2014Plugin Development @ WordCamp Norway 2014
Plugin Development @ WordCamp Norway 2014
 
Nightwatch at Tilt
Nightwatch at TiltNightwatch at Tilt
Nightwatch at Tilt
 
A Debugging Adventure: Journey through Ember.js Glue
A Debugging Adventure: Journey through Ember.js GlueA Debugging Adventure: Journey through Ember.js Glue
A Debugging Adventure: Journey through Ember.js Glue
 
[Srijan Wednesday Webinars] Developing Large Scale Applications in AngularJS
[Srijan Wednesday Webinars] Developing Large Scale Applications in AngularJS[Srijan Wednesday Webinars] Developing Large Scale Applications in AngularJS
[Srijan Wednesday Webinars] Developing Large Scale Applications in AngularJS
 
Web sockets in Angular
Web sockets in AngularWeb sockets in Angular
Web sockets in Angular
 
Bdd with Cucumber and Mocha
Bdd with Cucumber and MochaBdd with Cucumber and Mocha
Bdd with Cucumber and Mocha
 
Fullstack End-to-end test automation with Node.js, one year later
Fullstack End-to-end test automation with Node.js, one year laterFullstack End-to-end test automation with Node.js, one year later
Fullstack End-to-end test automation with Node.js, one year later
 
Behavior Driven Development and Automation Testing Using Cucumber
Behavior Driven Development and Automation Testing Using CucumberBehavior Driven Development and Automation Testing Using Cucumber
Behavior Driven Development and Automation Testing Using Cucumber
 
Spring Day | WaveMaker - Spring Roo - SpringSource Tool Suite: Choosing the R...
Spring Day | WaveMaker - Spring Roo - SpringSource Tool Suite: Choosing the R...Spring Day | WaveMaker - Spring Roo - SpringSource Tool Suite: Choosing the R...
Spring Day | WaveMaker - Spring Roo - SpringSource Tool Suite: Choosing the R...
 
Laravel 8 export data as excel file with example
Laravel 8 export data as excel file with exampleLaravel 8 export data as excel file with example
Laravel 8 export data as excel file with example
 
BDD in Java using Cucumber
BDD in Java using CucumberBDD in Java using Cucumber
BDD in Java using Cucumber
 

Viewers also liked

Rethinking Mobile with Ionic
Rethinking Mobile with IonicRethinking Mobile with Ionic
Rethinking Mobile with IonicMike Hartington
 
Effective Communication Of Data Inspired by Stephen Few
Effective Communication Of Data Inspired by Stephen FewEffective Communication Of Data Inspired by Stephen Few
Effective Communication Of Data Inspired by Stephen FewCory Grenier
 
Ionic Framework - get up and running to build hybrid mobile apps
Ionic Framework - get up and running to build hybrid mobile appsIonic Framework - get up and running to build hybrid mobile apps
Ionic Framework - get up and running to build hybrid mobile appsAndreas Sahle
 
Ionic 2 - Hybridapps auf Steroiden
Ionic 2 - Hybridapps auf SteroidenIonic 2 - Hybridapps auf Steroiden
Ionic 2 - Hybridapps auf SteroidenHendrik Lösch
 
Cordova, Angularjs & Ionic @ Codeaholics
Cordova, Angularjs & Ionic @ CodeaholicsCordova, Angularjs & Ionic @ Codeaholics
Cordova, Angularjs & Ionic @ CodeaholicsEddie Lau
 
Art and Science of Dashboard Design
Art and Science of Dashboard DesignArt and Science of Dashboard Design
Art and Science of Dashboard DesignSavvyData
 
Hybrid app in ionic framework overview
Hybrid app in ionic framework overviewHybrid app in ionic framework overview
Hybrid app in ionic framework overviewSanket 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...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 FrameworkHybrid Apps with Ionic Framework
Hybrid Apps with Ionic FrameworkBramus Van Damme
 
Cross Platform Mobile Apps with the Ionic Framework
Cross Platform Mobile Apps with the Ionic FrameworkCross Platform Mobile Apps with the Ionic Framework
Cross Platform Mobile Apps with the Ionic FrameworkTroy Miles
 
Building mobile app with Ionic Framework
Building mobile app with Ionic FrameworkBuilding mobile app with Ionic Framework
Building mobile app with Ionic FrameworkHuy Trần
 
Ionic - Revolutionizing Hybrid Mobile Application Development
Ionic - Revolutionizing Hybrid Mobile Application DevelopmentIonic - Revolutionizing Hybrid Mobile Application Development
Ionic - Revolutionizing Hybrid Mobile Application DevelopmentJustin James
 
Cordova + Ionic + MobileFirst
Cordova + Ionic + MobileFirstCordova + Ionic + MobileFirst
Cordova + Ionic + MobileFirstRaymond Camden
 
Workshop on Hybrid App Development with Ionic Framework
Workshop on Hybrid App Development with Ionic FrameworkWorkshop on Hybrid App Development with Ionic Framework
Workshop on Hybrid App Development with Ionic FrameworkAayush Shrestha
 
Ionic Crash Course! Hack-a-ton SF
Ionic Crash Course! Hack-a-ton SFIonic Crash Course! Hack-a-ton SF
Ionic Crash Course! Hack-a-ton SFLukas Ruebbelke
 
Intro to Ionic for Building Hybrid Mobile Applications
Intro to Ionic for Building Hybrid Mobile ApplicationsIntro to Ionic for Building Hybrid Mobile Applications
Intro to Ionic for Building Hybrid Mobile ApplicationsSasha dos Santos
 
Building Mobile Applications with Ionic
Building Mobile Applications with IonicBuilding Mobile Applications with Ionic
Building Mobile Applications with IonicMorris Singer
 
Scaling Teams, Processes and Architectures
Scaling Teams, Processes and ArchitecturesScaling Teams, Processes and Architectures
Scaling Teams, Processes and ArchitecturesLorenzo Alberton
 

Viewers also liked (20)

Rethinking Mobile with Ionic
Rethinking Mobile with IonicRethinking Mobile with Ionic
Rethinking Mobile with Ionic
 
Effective Communication Of Data Inspired by Stephen Few
Effective Communication Of Data Inspired by Stephen FewEffective Communication Of Data Inspired by Stephen Few
Effective Communication Of Data Inspired by Stephen Few
 
Ionic Framework - get up and running to build hybrid mobile apps
Ionic Framework - get up and running to build hybrid mobile appsIonic Framework - get up and running to build hybrid mobile apps
Ionic Framework - get up and running to build hybrid mobile apps
 
Ionic 2 - Hybridapps auf Steroiden
Ionic 2 - Hybridapps auf SteroidenIonic 2 - Hybridapps auf Steroiden
Ionic 2 - Hybridapps auf Steroiden
 
Cordova, Angularjs & Ionic @ Codeaholics
Cordova, Angularjs & Ionic @ CodeaholicsCordova, Angularjs & Ionic @ Codeaholics
Cordova, Angularjs & Ionic @ Codeaholics
 
Workshop Ionic Framework - CC FE & UX
Workshop Ionic Framework - CC FE & UXWorkshop Ionic Framework - CC FE & UX
Workshop Ionic Framework - CC FE & UX
 
Art and Science of Dashboard Design
Art and Science of Dashboard DesignArt and Science of Dashboard Design
Art and Science of Dashboard Design
 
Hybrid app in ionic framework overview
Hybrid app in ionic framework overviewHybrid app in ionic framework overview
Hybrid app in ionic framework overview
 
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...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...
 
Hybrid Apps with Ionic Framework
Hybrid Apps with Ionic FrameworkHybrid Apps with Ionic Framework
Hybrid Apps with Ionic Framework
 
Cross Platform Mobile Apps with the Ionic Framework
Cross Platform Mobile Apps with the Ionic FrameworkCross Platform Mobile Apps with the Ionic Framework
Cross Platform Mobile Apps with the Ionic Framework
 
Building mobile app with Ionic Framework
Building mobile app with Ionic FrameworkBuilding mobile app with Ionic Framework
Building mobile app with Ionic Framework
 
Ionic - Revolutionizing Hybrid Mobile Application Development
Ionic - Revolutionizing Hybrid Mobile Application DevelopmentIonic - Revolutionizing Hybrid Mobile Application Development
Ionic - Revolutionizing Hybrid Mobile Application Development
 
Cordova + Ionic + MobileFirst
Cordova + Ionic + MobileFirstCordova + Ionic + MobileFirst
Cordova + Ionic + MobileFirst
 
Workshop on Hybrid App Development with Ionic Framework
Workshop on Hybrid App Development with Ionic FrameworkWorkshop on Hybrid App Development with Ionic Framework
Workshop on Hybrid App Development with Ionic Framework
 
Hybrid app development with ionic
Hybrid app development with ionicHybrid app development with ionic
Hybrid app development with ionic
 
Ionic Crash Course! Hack-a-ton SF
Ionic Crash Course! Hack-a-ton SFIonic Crash Course! Hack-a-ton SF
Ionic Crash Course! Hack-a-ton SF
 
Intro to Ionic for Building Hybrid Mobile Applications
Intro to Ionic for Building Hybrid Mobile ApplicationsIntro to Ionic for Building Hybrid Mobile Applications
Intro to Ionic for Building Hybrid Mobile Applications
 
Building Mobile Applications with Ionic
Building Mobile Applications with IonicBuilding Mobile Applications with Ionic
Building Mobile Applications with Ionic
 
Scaling Teams, Processes and Architectures
Scaling Teams, Processes and ArchitecturesScaling Teams, Processes and Architectures
Scaling Teams, Processes and Architectures
 

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

ITB2015 - Crash Course in Ionic + AngularJS
ITB2015 - Crash Course in Ionic + AngularJSITB2015 - Crash Course in Ionic + AngularJS
ITB2015 - Crash Course in Ionic + AngularJSOrtus Solutions, Corp
 
Philip Shurpik "Architecting React Native app"
Philip Shurpik "Architecting React Native app"Philip Shurpik "Architecting React Native app"
Philip Shurpik "Architecting React Native app"Fwdays
 
Django simplified : by weever mbakaya
Django simplified : by weever mbakayaDjango simplified : by weever mbakaya
Django simplified : by weever mbakayaMbakaya Kwatukha
 
Cross Platform Mobile Apps with the Ionic Framework
Cross Platform Mobile Apps with the Ionic FrameworkCross Platform Mobile Apps with the Ionic Framework
Cross Platform Mobile Apps with the Ionic FrameworkTroy Miles
 
Desenvolvimento Mobile Híbrido
Desenvolvimento Mobile HíbridoDesenvolvimento Mobile Híbrido
Desenvolvimento Mobile HíbridoJuliano Martins
 
Angular JS, A dive to concepts
Angular JS, A dive to conceptsAngular JS, A dive to concepts
Angular JS, A dive to conceptsAbhishek Sur
 
The future of web development write once, run everywhere with angular js an...
The future of web development   write once, run everywhere with angular js an...The future of web development   write once, run everywhere with angular js an...
The future of web development write once, run everywhere with angular js an...Mark Leusink
 
The future of web development write once, run everywhere with angular.js and ...
The future of web development write once, run everywhere with angular.js and ...The future of web development write once, run everywhere with angular.js and ...
The future of web development write once, run everywhere with angular.js and ...Mark Roden
 
Intro To Django
Intro To DjangoIntro To Django
Intro To DjangoUdi Bauman
 
Integrating AngularJS into the Campus CMS
Integrating AngularJS into the Campus CMSIntegrating AngularJS into the Campus CMS
Integrating AngularJS into the Campus CMSTom Borger
 
Tech io spa_angularjs_20130814_v0.9.5
Tech io spa_angularjs_20130814_v0.9.5Tech io spa_angularjs_20130814_v0.9.5
Tech io spa_angularjs_20130814_v0.9.5Ganesh Kondal
 
Automation Abstractions: Page Objects and Beyond
Automation Abstractions: Page Objects and BeyondAutomation Abstractions: Page Objects and Beyond
Automation Abstractions: Page Objects and BeyondTechWell
 
Angular elements - embed your angular components EVERYWHERE
Angular elements - embed your angular components EVERYWHEREAngular elements - embed your angular components EVERYWHERE
Angular elements - embed your angular components EVERYWHERENadav Mary
 
AngularJS training - Day 1 - Basics: Why, What and basic features of AngularJS
AngularJS training - Day 1 - Basics: Why, What and basic features of AngularJSAngularJS training - Day 1 - Basics: Why, What and basic features of AngularJS
AngularJS training - Day 1 - Basics: Why, What and basic features of AngularJSmurtazahaveliwala
 
Angular1x and Angular 2 for Beginners
Angular1x and Angular 2 for BeginnersAngular1x and Angular 2 for Beginners
Angular1x and Angular 2 for BeginnersOswald Campesato
 

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

ITB2015 - Crash Course in Ionic + AngularJS
ITB2015 - Crash Course in Ionic + AngularJSITB2015 - Crash Course in Ionic + AngularJS
ITB2015 - Crash Course in Ionic + AngularJS
 
Philip Shurpik "Architecting React Native app"
Philip Shurpik "Architecting React Native app"Philip Shurpik "Architecting React Native app"
Philip Shurpik "Architecting React Native app"
 
Angular js workshop
Angular js workshopAngular js workshop
Angular js workshop
 
Django simplified : by weever mbakaya
Django simplified : by weever mbakayaDjango simplified : by weever mbakaya
Django simplified : by weever mbakaya
 
Cross Platform Mobile Apps with the Ionic Framework
Cross Platform Mobile Apps with the Ionic FrameworkCross Platform Mobile Apps with the Ionic Framework
Cross Platform Mobile Apps with the Ionic Framework
 
Desenvolvimento Mobile Híbrido
Desenvolvimento Mobile HíbridoDesenvolvimento Mobile Híbrido
Desenvolvimento Mobile Híbrido
 
Angular JS, A dive to concepts
Angular JS, A dive to conceptsAngular JS, A dive to concepts
Angular JS, A dive to concepts
 
The future of web development write once, run everywhere with angular js an...
The future of web development   write once, run everywhere with angular js an...The future of web development   write once, run everywhere with angular js an...
The future of web development write once, run everywhere with angular js an...
 
The future of web development write once, run everywhere with angular.js and ...
The future of web development write once, run everywhere with angular.js and ...The future of web development write once, run everywhere with angular.js and ...
The future of web development write once, run everywhere with angular.js and ...
 
Intro To Django
Intro To DjangoIntro To Django
Intro To Django
 
Integrating AngularJS into the Campus CMS
Integrating AngularJS into the Campus CMSIntegrating AngularJS into the Campus CMS
Integrating AngularJS into the Campus CMS
 
Tech io spa_angularjs_20130814_v0.9.5
Tech io spa_angularjs_20130814_v0.9.5Tech io spa_angularjs_20130814_v0.9.5
Tech io spa_angularjs_20130814_v0.9.5
 
Angularjs
AngularjsAngularjs
Angularjs
 
Dust.js
Dust.jsDust.js
Dust.js
 
React django
React djangoReact django
React django
 
Intro to AngularJs
Intro to AngularJsIntro to AngularJs
Intro to AngularJs
 
Automation Abstractions: Page Objects and Beyond
Automation Abstractions: Page Objects and BeyondAutomation Abstractions: Page Objects and Beyond
Automation Abstractions: Page Objects and Beyond
 
Angular elements - embed your angular components EVERYWHERE
Angular elements - embed your angular components EVERYWHEREAngular elements - embed your angular components EVERYWHERE
Angular elements - embed your angular components EVERYWHERE
 
AngularJS training - Day 1 - Basics: Why, What and basic features of AngularJS
AngularJS training - Day 1 - Basics: Why, What and basic features of AngularJSAngularJS training - Day 1 - Basics: Why, What and basic features of AngularJS
AngularJS training - Day 1 - Basics: Why, What and basic features of AngularJS
 
Angular1x and Angular 2 for Beginners
Angular1x and Angular 2 for BeginnersAngular1x and Angular 2 for Beginners
Angular1x and Angular 2 for Beginners
 

More from ColdFusionConference

Building better SQL Server Databases
Building better SQL Server DatabasesBuilding better SQL Server Databases
Building better SQL Server DatabasesColdFusionConference
 
API Economy, Realizing the Business Value of APIs
API Economy, Realizing the Business Value of APIsAPI Economy, Realizing the Business Value of APIs
API Economy, Realizing the Business Value of APIsColdFusionConference
 
Crafting ColdFusion Applications like an Architect
Crafting ColdFusion Applications like an ArchitectCrafting ColdFusion Applications like an Architect
Crafting ColdFusion Applications like an ArchitectColdFusionConference
 
Security And Access Control For APIS using CF API Manager
Security And Access Control For APIS using CF API ManagerSecurity And Access Control For APIS using CF API Manager
Security And Access Control For APIS using CF API ManagerColdFusionConference
 
Monetizing Business Models: ColdFusion and APIS
Monetizing Business Models: ColdFusion and APISMonetizing Business Models: ColdFusion and APIS
Monetizing Business Models: ColdFusion and APISColdFusionConference
 
Become a Security Rockstar with ColdFusion 2016
Become a Security Rockstar with ColdFusion 2016Become a Security Rockstar with ColdFusion 2016
Become a Security Rockstar with ColdFusion 2016ColdFusionConference
 
Developer Insights for Application Upgrade to ColdFusion 2016
Developer Insights for Application Upgrade to ColdFusion 2016Developer Insights for Application Upgrade to ColdFusion 2016
Developer Insights for Application Upgrade to ColdFusion 2016ColdFusionConference
 
ColdFusion Keynote: Building the Agile Web Since 1995
ColdFusion Keynote: Building the Agile Web Since 1995ColdFusion Keynote: Building the Agile Web Since 1995
ColdFusion Keynote: Building the Agile Web Since 1995ColdFusionConference
 
Super Fast Application development with Mura CMS
Super Fast Application development with Mura CMSSuper Fast Application development with Mura CMS
Super Fast Application development with Mura CMSColdFusionConference
 
Build your own secure and real-time dashboard for mobile and web
Build your own secure and real-time dashboard for mobile and webBuild your own secure and real-time dashboard for mobile and web
Build your own secure and real-time dashboard for mobile and webColdFusionConference
 

More from ColdFusionConference (20)

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

Recently uploaded

The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????blackmambaettijean
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Ryan Mahoney - Will Artificial Intelligence Replace Real Estate Agents
Ryan Mahoney - Will Artificial Intelligence Replace Real Estate AgentsRyan Mahoney - Will Artificial Intelligence Replace Real Estate Agents
Ryan Mahoney - Will Artificial Intelligence Replace Real Estate AgentsRyan Mahoney
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 

Recently uploaded (20)

The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Ryan Mahoney - Will Artificial Intelligence Replace Real Estate Agents
Ryan Mahoney - Will Artificial Intelligence Replace Real Estate AgentsRyan Mahoney - Will Artificial Intelligence Replace Real Estate Agents
Ryan Mahoney - Will Artificial Intelligence Replace Real Estate Agents
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 

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.
  • 3.
  • 4.
  • 5.
  • 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 – nolan@southofshasta.com – 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.
  • 56.
  • 57.
  • 58.
  • 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 – nolan@southofshasta.com – Twitter @southofshasta Free music trivia instead of swag giveaways. You're welcome. (Thanks again to Scott Steinbeck for assistance!) Thanks!