SlideShare a Scribd company logo
Front End Workshops
XIV. Ionic Framework
Enrique Oriol Bermúdez
eoriol@naradarobotics.com
“Ionicis the beautiful,
open source front-end SDK
for developing hybrid mobile apps
with web technologies.”
Content
● About Ionic
● Cordova
● Ionic Install
● Ionic CLI
● CSS Components
● Javascript
● Sass integration
About Ionic
HTML5 mobile app development framework
for building Hybrid apps -> Cordova / Phonegap
Native-styled mobile UI elements (iOS, Android) through CSS3
(optional) core functionality through AngularJS
About Ionic
Adapted CSS
based on
platform
What is a hybrid app?
Website running
in a browser shell
inside an app with access
to the native platform layer.
Cordova
Behind webview wrappers
What is Cordova
● Mobile development framework
● Provide API bindings to access device’s sensors, data…
● Open Source (vs Adobe PhoneGap)
● Build app wrappers for each mobile platform
● Distributable to app stores
Cordova Components
Config.xml
● app info
● config parameters
Cordova App
● Native WebView
● Web page -> index.html
Cordova Components
Plugins
● interface between Cordova and
native components
● Allows invoke native code from JS
● Plugins to standard device APIs
● Third party plugins
● How to build a plugin
Cordova Components
Cordova CLI
● Create new projects
● Add / remove platforms
● Build for any platform
● Run on real devices
● Run on emulators
● Search for plugins
● Install / Remove plugins
Ionic Install
The Entry Point
Ionic Install
1. Install Cordova
$ npm install -g cordova
Compatibility with iOS 7+,
Android 4.1+ and Windows 10
(officially)
FirefoxOS in roadmap
2. Install Ionic
$ npm install -g ionic
Avoid installing cordova and
ionic with sudo.
Problems? use NVM for node
Ionic CLI
Keeping things simple
Ionic provides its own CLI
extends cordova CLI
Ionic CLI
Ionic CLI
Configure platforms
$ ionic platform add ios
$ ionic platform add android
Build app from template
$ ionic platform rm ios
$ ionic platform rm android
$ ionic start myProject blank
$ ionic start myProject tabs
$ ionic start myProject sidemenu
Commands
Ionic CLI
Build the app
$ ionic build android
Run on device
$ ionic run android
Launch on emulator
$ ionic emulate android
Run dev server
$ ionic serve
Run dev Android & iOS side-by-side
$ ionic serve --lab
Add / remove plugins
$ ionic plugin add plugin-name
$ ionic plugin rm plugin-name
Commands
Ionic CLI
State Save (package.json)
$ ionic state save
State Restore
$ ionic state restore
State Reset
$ ionic state reset
change browser (Android Crosswalk)
$ ionic browser list
$ ionic browser add crosswalk
Update library
$ ionic lib update
Package app
$ ionic package debug android
$ ionic package release android
Commands
CSS components
Mobile oriented CSS framework
Defined as Sass variables
Easily customizable
Already used along ionic CSS styles
Colors
Ionic CSS componentshttp://ionicframework.com/docs/api/
Ionic CSS componentshttp://ionicframework.com/docs/api/
http://ionicons.com/Icons
<i class="icon ion-star"></i>
<div class="bar bar-header bar-positive">
<button class="button button-icon icon ion-navicon"></button>
<h1 class="title">Header</h1>
<button class="button button-clear">Edit</button>
</div>
<div class="bar bar-subheader">
<h2 class="title">Sub Header</h2>
</div>
<div class="bar bar-footer bar-balanced">
<div class="title">Footer</div>
</div>
bar-header, bar-subheader, bar-footer
Ionic CSS componentshttp://ionicframework.com/docs/api/
<button class="button">Default</button>
<button class="button button-block button-calm">Block Button</button>
<button class="button button-full button-energized">Full Width Block Button</button>
<button class="button button-outline button-assertive">Outlined Button</button>
<button class="button button-clear button-royal">Clear Button</button>
<button class="button icon-left ion-star button-dark">Favs</button>
<button class="button icon ion-gear-a button-clear button-dark"></button>
buttons
Ionic CSS componentshttp://ionicframework.com/docs/api/
<div class="list">
<div class="item item-divider">Simple items</div>
<div class="item">Item 1</div>
<div class="item item-divider">Items with image</div>
<div class="item item-avatar">
<img src="ionic.png">
<h2>Ionic Framework</h2> <p>HTML5 hybrid mobile app framework</p>
</div>
<div class="item item-thumbnail-left">
<img src="ionic.png">
<h2>Ionic Framework</h2> <p>HTML5 hybrid mobile app framework</p>
</div>
</div>
lists
Ionic CSS componentshttp://ionicframework.com/docs/api/
<!--<div class="tabs-striped tabs-top tabs-background-positive tabs-color-light">
-->
<div class="tabs-striped tabs-color-assertive">
<div class="tabs">
<a class="tab-item active" href="#">
<i class="icon ion-home"></i>
</a>
<a class="tab-item" href="#">
<i class="icon ion-star"></i>
</a>
<a class="tab-item" href="#">
<i class="icon ion-gear-a"></i>
Settings
</a>
</div>
</div>
tabs
Ionic CSS componentshttp://ionicframework.com/docs/api/
and more...
Ionic CSS componentshttp://ionicframework.com/docs/api/
Card styles form styles inputs
Javascript
AngularJS Extensions
ionic.bundle.js
Includes:
● angular.js
● angular-animate.js
● angular-sanitize.js
● angular-ui-router.js
● ionic angularJS elements
Ionic Javascript
ion-content directive: content area with custom Scroll View
Ionic AngularJS elementshttp://ionicframework.com/docs/api/
<ion-content
[delegate-handle="str"] [direction="str"]
[locking="bool"] [padding="bool"]
[scroll="bool"] [overflow-scroll="bool"]
[scrollbar-x="bool"] [scrollbar-y="bool"]
[start-x="string"] [start-y="string"]
[on-scroll="expr"] [on-scroll-complete="expr"]
[has-bouncing="bool"] [scroll-event-interval="int"]>
...
</ion-content>
<ion-content ng-controller="
MyController">
<ion-refresher
pulling-text="Pull to refresh..."
on-refresh="doRefresh()">
</ion-refresher>
<ion-list>
<ion-item ng-repeat="item in items">
</ion-item>
</ion-list>
</ion-content>
ion-refresher: adds pull-to-refresh to a scrollView
Ionic AngularJS elementshttp://ionicframework.com/docs/api/
angular.module('testApp', ['ionic'])
.controller('MyController', function($scope, $http) {
$scope.items = [1,2,3];
$scope.doRefresh = function() {
$http.get('/new-items')
.success(function(newItems) {
$scope.items = newItems;
})
.finally(function() {
// Stop the ion-refresher from spinning
$scope.$broadcast('scroll.refreshComplete');
});
};
});
$ionicScrollDelegate service
● $getByHandle(handle)
● resize()
● scrollTop([anim])
● scrollBottom([anim])
● scrollTo(left, top, [anim])
● scrollBy(left, top, [anim])
● zoomTo(level, [anim], [origL], [origT])
● zoomBy(factor, [anim], [origL], [origT])
● getScrollPosition()
● anchorScroll([anim]):@id window.location.hash
● freezeScroll([freeze]) / freezeAllScrolls([freeze])
● getScrollView()
ion-scroll
Ionic AngularJS elementshttp://ionicframework.com/docs/api/
<ion-scroll
[delegate-handle="str"] [direction="str"]
[locking="bool"] [paging="bool"]
[on-refresh="expr"] [on-scroll="expr"]
[scrollbar-x="bool"] [scrollbar-y="bool"]
[has-bouncing="bool"] [zooming="bool"]
[min-zoom="int"] [max-zoom="int"]
>
<div>Content to scroll</div>
</ion-scroll>
<ion-header-bar align-title="left">
<div class="buttons">
<!-- left button -->
</div>
<h1 class="title">Title!</h1>
<div class="buttons">
<!-- right button -->
</div>
</ion-header-bar>
ion-header-bar
Ionic AngularJS elementshttp://ionicframework.com/docs/api/
API
● align-title: left/right/center
● no-tap-scroll: by default it scrolls
content to the top when clicked
<ion-footer-bar align-title="left">
<div class="buttons">
<!-- left button -->
</div>
<h1 class="title">Title!</h1>
<div class="buttons">
<!-- right button -->
</div>
</ion-footer-bar>
ion-footer-bar
Ionic AngularJS elementshttp://ionicframework.com/docs/api/
API
● align-title: left/right/center
related directives
ion-item
ion-delete-button
ion-reorder-button
ion-option-button
<ion-list>
<ion-item ng-repeat="item in items">
Hello, {{item}}!
</ion-item>
</ion-list>
ion-list
Ionic AngularJS elementshttp://ionicframework.com/docs/api/
API
● delegate-handle
● type: list-inset / card
● show-delete
● show-reorder
● can-swipe
function MyCtrl($scope, $ionicListDelegate) {
$scope.showDeleteBtns = function() {
$ionicListDelegate.showDelete(true);
};
}
<button ng-click="showDeleteBtns()"></button>
<ion-list delegate-handle="testList">
<ion-item ng-repeat="i in items">
Item {{i}}
<ion-delete-button>Rm</ion-delete-button>
</ion-item>
</ion-list>
$ionicListDelegate
Ionic AngularJS elementshttp://ionicframework.com/docs/api/
API
● showReorder(bool)
● showDelete(bool)
● canSwipeItems(bool)
● closeOptionButtons()
● $getByHandle(handle)
Basics
● data must be array
● NO one-time binding (::)
<ion-content>
<ion-item collection-repeat="item in
items">
{{item}}
</ion-item>
</ion-content>
collection-repeat
Ionic AngularJS elementshttp://ionicframework.com/docs/api/
API
● collection-repeat
● item-width: in px or %
● item-height: in px or %
● item-render-buffer
● force-refresh-images
angular.module('LoadingApp', ['ionic'])
.controller('MyCtrl', function($scope, $ionicLoading) {
$scope.show = function() {
$ionicLoading.show({
template: 'Loading...'
});
};
$scope.hide = function(){
$ionicLoading.hide();
};
});
$ionicLoading service
Ionic AngularJS elementshttp://ionicframework.com/docs/api/
API
● show({opts})
○ template
○ templateUrl
○ scope
○ noBackdrop
○ hideOnStateChange
○ delay
○ duration
● hide()
<ion-side-menus delegate-handle="myMenu">
<!-- Left menu -->
<ion-side-menu side="left">
</ion-side-menu>
<ion-side-menu-content>
<!-- Main content, usually <ion-nav-view> -->
</ion-side-menu-content>
<!-- Right menu -->
<ion-side-menu side="right">
</ion-side-menu>
</ion-side-menus>
ionSideMenus
Ionic AngularJS elementshttp://ionicframework.com/docs/api/
$ionicSideMenuDelegate service
● $getByHandle(handle)
● toogleLeft([open])
● toogleRight([open])
● getOpenRatio()
● isOpen()
● isOpenLeft()
● isOpenRight()
● canDragContent([can])
● edgeDragThreshold(value): #pixels, true(25px), 0
<ion-tabs class="tabs-positive tabs-icon-top"
delegate-handle="myTabs">
<ion-tab title="Home" icon-on="icon1" icon-off="
icon1-off" badge="5" on-select="sel()" on-deselect="
desel()" hidden="bool" disabled="bool">
<!-- Tab 1 content -->
</ion-tab>
<ion-tab title="About" icon="icon2">
<!-- Tab 2 content -->
</ion-tab>
</ion-tabs>
ionTabs
Ionic AngularJS elementshttp://ionicframework.com/docs/api/
$ionicTabsDelegate service
● $getByHandle(handle)
● select(index)
● selectedIndex()
● showBar(show)
ionNavViews
Ionic AngularJS elementshttp://ionicframework.com/docs/api/
Usage
var app = angular.module('myApp', ['ionic']);
app.config(function($stateProvider) {
$stateProvider
.state('index', {
url: '/',
template: '<ion-view view-title="My Page">
...my home content...
</ion-view>'
})
.state('about', {
url: '/about',
templateUrl: 'about.html'//this template should use ion-view
});
});
<!-- The nav bar that will be updated as we
navigate →
<ion-nav-bar>
<ion-nav-back-button></ion-nav-back-button>
</ion-nav-bar>
<!-- where the initial view template will be
rendered -->
<ion-nav-view></ion-nav-view>
ion-views are cached by default
.controller(function($scope, $ionicActionSheet) {
$scope.show = function() {
// Show the action sheet
var hideSheet = $ionicActionSheet.show({
buttons: [
{ text: '<b>Share</b> This' },
],
cancelText: 'Cancel',
cancel: function() {},
buttonClicked: function(index) {return true;}
});
};
});
$ionicActionSheet
Ionic AngularJS elementshttp://ionicframework.com/docs/api/
show(options)
● buttons: [{text:””}]
● titleText: str
● cancelText: str
● destructiveText: str
● cancel: f()
● buttonClicked: f() return true to close ASheet
● destructiveButtonClicked: f() true to close
● cancelOnStateChange: f() cancel when navigate
● cssClass: str custom CSS class name
<ion-slides options="options" slider="data.slider">
<ion-slide-page>
<div class="box blue"><h1>BLUE</h1></div>
</ion-slide-page>
<ion-slide-page>
<div class="box yellow"><h1>YELLOW</h1></div>
</ion-slide-page>
</ion-slides>
ion-slides (Swiper)
Ionic AngularJS elementshttp://ionicframework.com/docs/api/
How to use it
$scope.options = {
loop: false,
effect: fade,
speed: 500,
}
$scope.data = {};
$scope.$watch('data.slider', function(nv, ov) {
$scope.slider = $scope.data.slider;
})
Sass integration
because designers also Need love
What is this doing
1. Install Gulp and gulp-sass
2. remove old CSS files from index.html
3. add Sass generated CSS files to index.html
4. add Sass to gulp startup tasks, so ionic serve command watch for Sass changes.
$ ionic setup sass
setup Sass
Sass integration
./scss/ionic.app.scss
where do you write your Sass
Workshop 15: Ionic framework

More Related Content

What's hot

Workshop 27: Isomorphic web apps with ReactJS
Workshop 27: Isomorphic web apps with ReactJSWorkshop 27: Isomorphic web apps with ReactJS
Workshop 27: Isomorphic web apps with ReactJS
Visual Engineering
 
Workshop 14: AngularJS Parte III
Workshop 14: AngularJS Parte IIIWorkshop 14: AngularJS Parte III
Workshop 14: AngularJS Parte III
Visual Engineering
 
Angular js 2
Angular js 2Angular js 2
Angular js 2
Ran Wahle
 
Building scalable applications with angular js
Building scalable applications with angular jsBuilding scalable applications with angular js
Building scalable applications with angular js
Andrew Alpert
 
Improving app performance with Kotlin Coroutines
Improving app performance with Kotlin CoroutinesImproving app performance with Kotlin Coroutines
Improving app performance with Kotlin Coroutines
Hassan Abid
 
Angular2 Development for Java developers
Angular2 Development for Java developersAngular2 Development for Java developers
Angular2 Development for Java developers
Yakov Fain
 
Workshop 16: EmberJS Parte I
Workshop 16: EmberJS Parte IWorkshop 16: EmberJS Parte I
Workshop 16: EmberJS Parte I
Visual Engineering
 
Angular2 for Beginners
Angular2 for BeginnersAngular2 for Beginners
Angular2 for Beginners
Oswald Campesato
 
Angular 2.0 Routing and Navigation
Angular 2.0 Routing and NavigationAngular 2.0 Routing and Navigation
Angular 2.0 Routing and Navigation
Eyal Vardi
 
React native by example by Vadim Ruban
React native by example by Vadim RubanReact native by example by Vadim Ruban
React native by example by Vadim Ruban
Lohika_Odessa_TechTalks
 
Speed up your Web applications with HTML5 WebSockets
Speed up your Web applications with HTML5 WebSocketsSpeed up your Web applications with HTML5 WebSockets
Speed up your Web applications with HTML5 WebSockets
Yakov Fain
 
How to Build SPA with Vue Router 2.0
How to Build SPA with Vue Router 2.0How to Build SPA with Vue Router 2.0
How to Build SPA with Vue Router 2.0
Takuya Tejima
 
Mobile App Development: Primi passi con NativeScript e Angular 2
Mobile App Development: Primi passi con NativeScript e Angular 2Mobile App Development: Primi passi con NativeScript e Angular 2
Mobile App Development: Primi passi con NativeScript e Angular 2
Filippo Matteo Riggio
 
AngularJs Crash Course
AngularJs Crash CourseAngularJs Crash Course
AngularJs Crash Course
Keith Bloomfield
 
AngularJS - Services
AngularJS - ServicesAngularJS - Services
AngularJS - Services
Nir Kaufman
 
Jetpack, with new features in 2021 GDG Georgetown IO Extended
Jetpack, with new features in 2021 GDG Georgetown IO ExtendedJetpack, with new features in 2021 GDG Georgetown IO Extended
Jetpack, with new features in 2021 GDG Georgetown IO Extended
Toru Wonyoung Choi
 
What’s new in Android JetPack
What’s new in Android JetPackWhat’s new in Android JetPack
What’s new in Android JetPack
Hassan Abid
 
Exploring Angular 2 - Episode 2
Exploring Angular 2 - Episode 2Exploring Angular 2 - Episode 2
Exploring Angular 2 - Episode 2
Ahmed Moawad
 

What's hot (20)

Workshop 27: Isomorphic web apps with ReactJS
Workshop 27: Isomorphic web apps with ReactJSWorkshop 27: Isomorphic web apps with ReactJS
Workshop 27: Isomorphic web apps with ReactJS
 
Workshop 14: AngularJS Parte III
Workshop 14: AngularJS Parte IIIWorkshop 14: AngularJS Parte III
Workshop 14: AngularJS Parte III
 
Angular js 2
Angular js 2Angular js 2
Angular js 2
 
Building scalable applications with angular js
Building scalable applications with angular jsBuilding scalable applications with angular js
Building scalable applications with angular js
 
Improving app performance with Kotlin Coroutines
Improving app performance with Kotlin CoroutinesImproving app performance with Kotlin Coroutines
Improving app performance with Kotlin Coroutines
 
Angular2 Development for Java developers
Angular2 Development for Java developersAngular2 Development for Java developers
Angular2 Development for Java developers
 
Workshop 16: EmberJS Parte I
Workshop 16: EmberJS Parte IWorkshop 16: EmberJS Parte I
Workshop 16: EmberJS Parte I
 
Angularjs
AngularjsAngularjs
Angularjs
 
Angular2 for Beginners
Angular2 for BeginnersAngular2 for Beginners
Angular2 for Beginners
 
Angular 2.0 Routing and Navigation
Angular 2.0 Routing and NavigationAngular 2.0 Routing and Navigation
Angular 2.0 Routing and Navigation
 
React native by example by Vadim Ruban
React native by example by Vadim RubanReact native by example by Vadim Ruban
React native by example by Vadim Ruban
 
Angular js
Angular jsAngular js
Angular js
 
Speed up your Web applications with HTML5 WebSockets
Speed up your Web applications with HTML5 WebSocketsSpeed up your Web applications with HTML5 WebSockets
Speed up your Web applications with HTML5 WebSockets
 
How to Build SPA with Vue Router 2.0
How to Build SPA with Vue Router 2.0How to Build SPA with Vue Router 2.0
How to Build SPA with Vue Router 2.0
 
Mobile App Development: Primi passi con NativeScript e Angular 2
Mobile App Development: Primi passi con NativeScript e Angular 2Mobile App Development: Primi passi con NativeScript e Angular 2
Mobile App Development: Primi passi con NativeScript e Angular 2
 
AngularJs Crash Course
AngularJs Crash CourseAngularJs Crash Course
AngularJs Crash Course
 
AngularJS - Services
AngularJS - ServicesAngularJS - Services
AngularJS - Services
 
Jetpack, with new features in 2021 GDG Georgetown IO Extended
Jetpack, with new features in 2021 GDG Georgetown IO ExtendedJetpack, with new features in 2021 GDG Georgetown IO Extended
Jetpack, with new features in 2021 GDG Georgetown IO Extended
 
What’s new in Android JetPack
What’s new in Android JetPackWhat’s new in Android JetPack
What’s new in Android JetPack
 
Exploring Angular 2 - Episode 2
Exploring Angular 2 - Episode 2Exploring Angular 2 - Episode 2
Exploring Angular 2 - Episode 2
 

Viewers also liked

Cara Gila Bebas FINANSIAL Dibawah 90 Hari Lewat Toko Online!
Cara Gila Bebas FINANSIAL Dibawah 90 Hari Lewat Toko Online!Cara Gila Bebas FINANSIAL Dibawah 90 Hari Lewat Toko Online!
Cara Gila Bebas FINANSIAL Dibawah 90 Hari Lewat Toko Online!
http://www.GoRezeki.com
 
Workshop 10: ECMAScript 6
Workshop 10: ECMAScript 6Workshop 10: ECMAScript 6
Workshop 10: ECMAScript 6
Visual Engineering
 
Workshop 5: JavaScript testing
Workshop 5: JavaScript testingWorkshop 5: JavaScript testing
Workshop 5: JavaScript testing
Visual Engineering
 
Workshop 8: Templating: Handlebars, DustJS
Workshop 8: Templating: Handlebars, DustJSWorkshop 8: Templating: Handlebars, DustJS
Workshop 8: Templating: Handlebars, DustJS
Visual Engineering
 
Workshop 9: BackboneJS y patrones MVC
Workshop 9: BackboneJS y patrones MVCWorkshop 9: BackboneJS y patrones MVC
Workshop 9: BackboneJS y patrones MVC
Visual Engineering
 
Workshop 7: Single Page Applications
Workshop 7: Single Page ApplicationsWorkshop 7: Single Page Applications
Workshop 7: Single Page Applications
Visual Engineering
 
Steve Bromley - Running User Tests for VR Games
Steve Bromley - Running User Tests for VR GamesSteve Bromley - Running User Tests for VR Games
Steve Bromley - Running User Tests for VR Games
uxbri
 
Designing the future of Augmented Reality
Designing the future of Augmented RealityDesigning the future of Augmented Reality
Designing the future of Augmented Reality
Carina Ngai
 
Workshop Ionic Framework - CC FE & UX
Workshop Ionic Framework - CC FE & UXWorkshop Ionic Framework - CC FE & UX
Workshop Ionic Framework - CC FE & UX
JWORKS powered by Ordina
 
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
Aayush Shrestha
 
TalkUX - UX in VR - UNIT9
TalkUX - UX in VR - UNIT9TalkUX - UX in VR - UNIT9
TalkUX - UX in VR - UNIT9
Laura Cortes
 
The rise of VR & AR era. Why this time is different?
The rise of VR & AR era. Why this time is different?The rise of VR & AR era. Why this time is different?
The rise of VR & AR era. Why this time is different?
Vasily Ryzhonkov
 

Viewers also liked (12)

Cara Gila Bebas FINANSIAL Dibawah 90 Hari Lewat Toko Online!
Cara Gila Bebas FINANSIAL Dibawah 90 Hari Lewat Toko Online!Cara Gila Bebas FINANSIAL Dibawah 90 Hari Lewat Toko Online!
Cara Gila Bebas FINANSIAL Dibawah 90 Hari Lewat Toko Online!
 
Workshop 10: ECMAScript 6
Workshop 10: ECMAScript 6Workshop 10: ECMAScript 6
Workshop 10: ECMAScript 6
 
Workshop 5: JavaScript testing
Workshop 5: JavaScript testingWorkshop 5: JavaScript testing
Workshop 5: JavaScript testing
 
Workshop 8: Templating: Handlebars, DustJS
Workshop 8: Templating: Handlebars, DustJSWorkshop 8: Templating: Handlebars, DustJS
Workshop 8: Templating: Handlebars, DustJS
 
Workshop 9: BackboneJS y patrones MVC
Workshop 9: BackboneJS y patrones MVCWorkshop 9: BackboneJS y patrones MVC
Workshop 9: BackboneJS y patrones MVC
 
Workshop 7: Single Page Applications
Workshop 7: Single Page ApplicationsWorkshop 7: Single Page Applications
Workshop 7: Single Page Applications
 
Steve Bromley - Running User Tests for VR Games
Steve Bromley - Running User Tests for VR GamesSteve Bromley - Running User Tests for VR Games
Steve Bromley - Running User Tests for VR Games
 
Designing the future of Augmented Reality
Designing the future of Augmented RealityDesigning the future of Augmented Reality
Designing the future of Augmented Reality
 
Workshop Ionic Framework - CC FE & UX
Workshop Ionic Framework - CC FE & UXWorkshop Ionic Framework - CC FE & UX
Workshop Ionic Framework - CC FE & UX
 
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
 
TalkUX - UX in VR - UNIT9
TalkUX - UX in VR - UNIT9TalkUX - UX in VR - UNIT9
TalkUX - UX in VR - UNIT9
 
The rise of VR & AR era. Why this time is different?
The rise of VR & AR era. Why this time is different?The rise of VR & AR era. Why this time is different?
The rise of VR & AR era. Why this time is different?
 

Similar to Workshop 15: Ionic framework

Ionic by Example
Ionic by ExampleIonic by Example
Ionic by Example
Michal Haták
 
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
Troy Miles
 
Ionic2 First Lesson of Four
Ionic2 First Lesson of FourIonic2 First Lesson of Four
Ionic2 First Lesson of Four
Ahmed Mahmoud Kesha
 
Ionic bbl le 19 février 2015
Ionic bbl le 19 février 2015Ionic bbl le 19 février 2015
Ionic bbl le 19 février 2015
Loïc Knuchel
 
Angularjs Tutorial for Beginners
Angularjs Tutorial for BeginnersAngularjs Tutorial for Beginners
Angularjs Tutorial for Beginners
rajkamaltibacademy
 
Hybrid app development with ionic
Hybrid app development with ionicHybrid app development with ionic
Hybrid app development with ionic
Wan Muzaffar Wan Hashim
 
[JavaLand 2015] Developing JavaScript Mobile Apps Using Apache Cordova
[JavaLand 2015] Developing JavaScript Mobile Apps Using Apache Cordova[JavaLand 2015] Developing JavaScript Mobile Apps Using Apache Cordova
[JavaLand 2015] Developing JavaScript Mobile Apps Using Apache Cordova
Hazem Saleh
 
Ionic CLI Adventures
Ionic CLI AdventuresIonic CLI Adventures
Ionic CLI Adventures
Juarez Filho
 
Apache Cordova In Action
Apache Cordova In ActionApache Cordova In Action
Apache Cordova In Action
Hazem Saleh
 
Building Mobile Applications with Ionic
Building Mobile Applications with IonicBuilding Mobile Applications with Ionic
Building Mobile Applications with Ionic
Morris Singer
 
Developing Native Mobile Apps Using JavaScript, ApacheCon NA 2014
Developing Native Mobile Apps Using JavaScript, ApacheCon NA 2014Developing Native Mobile Apps Using JavaScript, ApacheCon NA 2014
Developing Native Mobile Apps Using JavaScript, ApacheCon NA 2014
Hazem Saleh
 
Developing ionic apps for android and ios
Developing ionic apps for android and iosDeveloping ionic apps for android and ios
Developing ionic apps for android and ios
gautham_m79
 
Crash Course in AngularJS + Ionic (Deep dive)
Crash Course in AngularJS + Ionic (Deep dive)Crash Course in AngularJS + Ionic (Deep dive)
Crash Course in AngularJS + Ionic (Deep dive)
ColdFusionConference
 
Ionic으로 모바일앱 만들기 #4
Ionic으로 모바일앱 만들기 #4Ionic으로 모바일앱 만들기 #4
Ionic으로 모바일앱 만들기 #4
성일 한
 
Tutorial: Develop Mobile Applications with AngularJS
Tutorial: Develop Mobile Applications with AngularJSTutorial: Develop Mobile Applications with AngularJS
Tutorial: Develop Mobile Applications with AngularJS
Philipp Burgmer
 
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
Troy Miles
 
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
Andreas Sahle
 
[JMaghreb 2014] Developing JavaScript Mobile Apps Using Apache Cordova
[JMaghreb 2014] Developing JavaScript Mobile Apps Using Apache Cordova[JMaghreb 2014] Developing JavaScript Mobile Apps Using Apache Cordova
[JMaghreb 2014] Developing JavaScript Mobile Apps Using Apache Cordova
Hazem Saleh
 
Ionic
IonicIonic
Building mobile apps using meteorJS
Building mobile apps using meteorJSBuilding mobile apps using meteorJS
Building mobile apps using meteorJS
Entrepreneur / Startup
 

Similar to Workshop 15: Ionic framework (20)

Ionic by Example
Ionic by ExampleIonic by Example
Ionic by Example
 
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
 
Ionic2 First Lesson of Four
Ionic2 First Lesson of FourIonic2 First Lesson of Four
Ionic2 First Lesson of Four
 
Ionic bbl le 19 février 2015
Ionic bbl le 19 février 2015Ionic bbl le 19 février 2015
Ionic bbl le 19 février 2015
 
Angularjs Tutorial for Beginners
Angularjs Tutorial for BeginnersAngularjs Tutorial for Beginners
Angularjs Tutorial for Beginners
 
Hybrid app development with ionic
Hybrid app development with ionicHybrid app development with ionic
Hybrid app development with ionic
 
[JavaLand 2015] Developing JavaScript Mobile Apps Using Apache Cordova
[JavaLand 2015] Developing JavaScript Mobile Apps Using Apache Cordova[JavaLand 2015] Developing JavaScript Mobile Apps Using Apache Cordova
[JavaLand 2015] Developing JavaScript Mobile Apps Using Apache Cordova
 
Ionic CLI Adventures
Ionic CLI AdventuresIonic CLI Adventures
Ionic CLI Adventures
 
Apache Cordova In Action
Apache Cordova In ActionApache Cordova In Action
Apache Cordova In Action
 
Building Mobile Applications with Ionic
Building Mobile Applications with IonicBuilding Mobile Applications with Ionic
Building Mobile Applications with Ionic
 
Developing Native Mobile Apps Using JavaScript, ApacheCon NA 2014
Developing Native Mobile Apps Using JavaScript, ApacheCon NA 2014Developing Native Mobile Apps Using JavaScript, ApacheCon NA 2014
Developing Native Mobile Apps Using JavaScript, ApacheCon NA 2014
 
Developing ionic apps for android and ios
Developing ionic apps for android and iosDeveloping ionic apps for android and ios
Developing ionic apps for android and ios
 
Crash Course in AngularJS + Ionic (Deep dive)
Crash Course in AngularJS + Ionic (Deep dive)Crash Course in AngularJS + Ionic (Deep dive)
Crash Course in AngularJS + Ionic (Deep dive)
 
Ionic으로 모바일앱 만들기 #4
Ionic으로 모바일앱 만들기 #4Ionic으로 모바일앱 만들기 #4
Ionic으로 모바일앱 만들기 #4
 
Tutorial: Develop Mobile Applications with AngularJS
Tutorial: Develop Mobile Applications with AngularJSTutorial: Develop Mobile Applications with AngularJS
Tutorial: Develop Mobile Applications with AngularJS
 
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
 
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
 
[JMaghreb 2014] Developing JavaScript Mobile Apps Using Apache Cordova
[JMaghreb 2014] Developing JavaScript Mobile Apps Using Apache Cordova[JMaghreb 2014] Developing JavaScript Mobile Apps Using Apache Cordova
[JMaghreb 2014] Developing JavaScript Mobile Apps Using Apache Cordova
 
Ionic
IonicIonic
Ionic
 
Building mobile apps using meteorJS
Building mobile apps using meteorJSBuilding mobile apps using meteorJS
Building mobile apps using meteorJS
 

More from Visual Engineering

Workshop iOS 4: Closures, generics & operators
Workshop iOS 4: Closures, generics & operatorsWorkshop iOS 4: Closures, generics & operators
Workshop iOS 4: Closures, generics & operators
Visual Engineering
 
Workshop iOS 3: Testing, protocolos y extensiones
Workshop iOS 3: Testing, protocolos y extensionesWorkshop iOS 3: Testing, protocolos y extensiones
Workshop iOS 3: Testing, protocolos y extensiones
Visual Engineering
 
Workshop iOS 2: Swift - Structures
Workshop iOS 2: Swift - StructuresWorkshop iOS 2: Swift - Structures
Workshop iOS 2: Swift - Structures
Visual Engineering
 
Workhop iOS 1: Fundamentos de Swift
Workhop iOS 1: Fundamentos de SwiftWorkhop iOS 1: Fundamentos de Swift
Workhop iOS 1: Fundamentos de Swift
Visual Engineering
 
Workshop 26: React Native - The Native Side
Workshop 26: React Native - The Native SideWorkshop 26: React Native - The Native Side
Workshop 26: React Native - The Native Side
Visual Engineering
 
Workshop 23: ReactJS, React & Redux testing
Workshop 23: ReactJS, React & Redux testingWorkshop 23: ReactJS, React & Redux testing
Workshop 23: ReactJS, React & Redux testing
Visual Engineering
 
Workshop 22: ReactJS Redux Advanced
Workshop 22: ReactJS Redux AdvancedWorkshop 22: ReactJS Redux Advanced
Workshop 22: ReactJS Redux Advanced
Visual Engineering
 
Workshop 22: React-Redux Middleware
Workshop 22: React-Redux MiddlewareWorkshop 22: React-Redux Middleware
Workshop 22: React-Redux Middleware
Visual Engineering
 
Workshop 21: React Router
Workshop 21: React RouterWorkshop 21: React Router
Workshop 21: React Router
Visual Engineering
 
Workshop 20: ReactJS Part II Flux Pattern & Redux
Workshop 20: ReactJS Part II Flux Pattern & ReduxWorkshop 20: ReactJS Part II Flux Pattern & Redux
Workshop 20: ReactJS Part II Flux Pattern & Redux
Visual Engineering
 
Workshop 19: ReactJS Introduction
Workshop 19: ReactJS IntroductionWorkshop 19: ReactJS Introduction
Workshop 19: ReactJS Introduction
Visual Engineering
 
Workshop 18: CSS Animations & cool effects
Workshop 18: CSS Animations & cool effectsWorkshop 18: CSS Animations & cool effects
Workshop 18: CSS Animations & cool effects
Visual Engineering
 
Workshop 17: EmberJS parte II
Workshop 17: EmberJS parte IIWorkshop 17: EmberJS parte II
Workshop 17: EmberJS parte II
Visual Engineering
 
Workshop 11: Trendy web designs & prototyping
Workshop 11: Trendy web designs & prototypingWorkshop 11: Trendy web designs & prototyping
Workshop 11: Trendy web designs & prototyping
Visual Engineering
 
Workshop 6: Designer tools
Workshop 6: Designer toolsWorkshop 6: Designer tools
Workshop 6: Designer tools
Visual Engineering
 
Workshop 4: NodeJS. Express Framework & MongoDB.
Workshop 4: NodeJS. Express Framework & MongoDB.Workshop 4: NodeJS. Express Framework & MongoDB.
Workshop 4: NodeJS. Express Framework & MongoDB.
Visual Engineering
 
Workshop 3: JavaScript build tools
Workshop 3: JavaScript build toolsWorkshop 3: JavaScript build tools
Workshop 3: JavaScript build tools
Visual Engineering
 
Workshop 2: JavaScript Design Patterns
Workshop 2: JavaScript Design PatternsWorkshop 2: JavaScript Design Patterns
Workshop 2: JavaScript Design Patterns
Visual Engineering
 

More from Visual Engineering (18)

Workshop iOS 4: Closures, generics & operators
Workshop iOS 4: Closures, generics & operatorsWorkshop iOS 4: Closures, generics & operators
Workshop iOS 4: Closures, generics & operators
 
Workshop iOS 3: Testing, protocolos y extensiones
Workshop iOS 3: Testing, protocolos y extensionesWorkshop iOS 3: Testing, protocolos y extensiones
Workshop iOS 3: Testing, protocolos y extensiones
 
Workshop iOS 2: Swift - Structures
Workshop iOS 2: Swift - StructuresWorkshop iOS 2: Swift - Structures
Workshop iOS 2: Swift - Structures
 
Workhop iOS 1: Fundamentos de Swift
Workhop iOS 1: Fundamentos de SwiftWorkhop iOS 1: Fundamentos de Swift
Workhop iOS 1: Fundamentos de Swift
 
Workshop 26: React Native - The Native Side
Workshop 26: React Native - The Native SideWorkshop 26: React Native - The Native Side
Workshop 26: React Native - The Native Side
 
Workshop 23: ReactJS, React & Redux testing
Workshop 23: ReactJS, React & Redux testingWorkshop 23: ReactJS, React & Redux testing
Workshop 23: ReactJS, React & Redux testing
 
Workshop 22: ReactJS Redux Advanced
Workshop 22: ReactJS Redux AdvancedWorkshop 22: ReactJS Redux Advanced
Workshop 22: ReactJS Redux Advanced
 
Workshop 22: React-Redux Middleware
Workshop 22: React-Redux MiddlewareWorkshop 22: React-Redux Middleware
Workshop 22: React-Redux Middleware
 
Workshop 21: React Router
Workshop 21: React RouterWorkshop 21: React Router
Workshop 21: React Router
 
Workshop 20: ReactJS Part II Flux Pattern & Redux
Workshop 20: ReactJS Part II Flux Pattern & ReduxWorkshop 20: ReactJS Part II Flux Pattern & Redux
Workshop 20: ReactJS Part II Flux Pattern & Redux
 
Workshop 19: ReactJS Introduction
Workshop 19: ReactJS IntroductionWorkshop 19: ReactJS Introduction
Workshop 19: ReactJS Introduction
 
Workshop 18: CSS Animations & cool effects
Workshop 18: CSS Animations & cool effectsWorkshop 18: CSS Animations & cool effects
Workshop 18: CSS Animations & cool effects
 
Workshop 17: EmberJS parte II
Workshop 17: EmberJS parte IIWorkshop 17: EmberJS parte II
Workshop 17: EmberJS parte II
 
Workshop 11: Trendy web designs & prototyping
Workshop 11: Trendy web designs & prototypingWorkshop 11: Trendy web designs & prototyping
Workshop 11: Trendy web designs & prototyping
 
Workshop 6: Designer tools
Workshop 6: Designer toolsWorkshop 6: Designer tools
Workshop 6: Designer tools
 
Workshop 4: NodeJS. Express Framework & MongoDB.
Workshop 4: NodeJS. Express Framework & MongoDB.Workshop 4: NodeJS. Express Framework & MongoDB.
Workshop 4: NodeJS. Express Framework & MongoDB.
 
Workshop 3: JavaScript build tools
Workshop 3: JavaScript build toolsWorkshop 3: JavaScript build tools
Workshop 3: JavaScript build tools
 
Workshop 2: JavaScript Design Patterns
Workshop 2: JavaScript Design PatternsWorkshop 2: JavaScript Design Patterns
Workshop 2: JavaScript Design Patterns
 

Recently uploaded

Graphic Design Crash Course for beginners
Graphic Design Crash Course for beginnersGraphic Design Crash Course for beginners
Graphic Design Crash Course for beginners
e20449
 
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Mind IT Systems
 
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus
 
Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"
Donna Lenk
 
RISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent EnterpriseRISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent Enterprise
Srikant77
 
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteAI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
Google
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus
 
How Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptxHow Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptx
wottaspaceseo
 
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
informapgpstrackings
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke
 
Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
NYGGS Automation Suite
 
Accelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with PlatformlessAccelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with Platformless
WSO2
 
A Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdfA Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdf
kalichargn70th171
 
2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
Georgi Kodinov
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
Adele Miller
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
Fermin Galan
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
Globus
 
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamOpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
takuyayamamoto1800
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
Matt Welsh
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
Max Andersen
 

Recently uploaded (20)

Graphic Design Crash Course for beginners
Graphic Design Crash Course for beginnersGraphic Design Crash Course for beginners
Graphic Design Crash Course for beginners
 
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
 
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
 
Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"
 
RISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent EnterpriseRISE with SAP and Journey to the Intelligent Enterprise
RISE with SAP and Journey to the Intelligent Enterprise
 
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing SuiteAI Pilot Review: The World’s First Virtual Assistant Marketing Suite
AI Pilot Review: The World’s First Virtual Assistant Marketing Suite
 
Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus Compute wth IRI Workflows - GlobusWorld 2024
Globus Compute wth IRI Workflows - GlobusWorld 2024
 
How Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptxHow Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptx
 
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
 
Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
 
Accelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with PlatformlessAccelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with Platformless
 
A Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdfA Comprehensive Look at Generative AI in Retail App Testing.pdf
A Comprehensive Look at Generative AI in Retail App Testing.pdf
 
2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx2024 RoOUG Security model for the cloud.pptx
2024 RoOUG Security model for the cloud.pptx
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
 
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamOpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
 

Workshop 15: Ionic framework

  • 1. Front End Workshops XIV. Ionic Framework Enrique Oriol Bermúdez eoriol@naradarobotics.com
  • 2. “Ionicis the beautiful, open source front-end SDK for developing hybrid mobile apps with web technologies.”
  • 3. Content ● About Ionic ● Cordova ● Ionic Install ● Ionic CLI ● CSS Components ● Javascript ● Sass integration
  • 4. About Ionic HTML5 mobile app development framework for building Hybrid apps -> Cordova / Phonegap Native-styled mobile UI elements (iOS, Android) through CSS3 (optional) core functionality through AngularJS
  • 6. What is a hybrid app? Website running in a browser shell inside an app with access to the native platform layer.
  • 8. What is Cordova ● Mobile development framework ● Provide API bindings to access device’s sensors, data… ● Open Source (vs Adobe PhoneGap) ● Build app wrappers for each mobile platform ● Distributable to app stores
  • 9. Cordova Components Config.xml ● app info ● config parameters Cordova App ● Native WebView ● Web page -> index.html
  • 10. Cordova Components Plugins ● interface between Cordova and native components ● Allows invoke native code from JS ● Plugins to standard device APIs ● Third party plugins ● How to build a plugin
  • 11. Cordova Components Cordova CLI ● Create new projects ● Add / remove platforms ● Build for any platform ● Run on real devices ● Run on emulators ● Search for plugins ● Install / Remove plugins
  • 13. Ionic Install 1. Install Cordova $ npm install -g cordova Compatibility with iOS 7+, Android 4.1+ and Windows 10 (officially) FirefoxOS in roadmap 2. Install Ionic $ npm install -g ionic Avoid installing cordova and ionic with sudo. Problems? use NVM for node
  • 15. Ionic provides its own CLI extends cordova CLI Ionic CLI
  • 16. Ionic CLI Configure platforms $ ionic platform add ios $ ionic platform add android Build app from template $ ionic platform rm ios $ ionic platform rm android $ ionic start myProject blank $ ionic start myProject tabs $ ionic start myProject sidemenu Commands
  • 17. Ionic CLI Build the app $ ionic build android Run on device $ ionic run android Launch on emulator $ ionic emulate android Run dev server $ ionic serve Run dev Android & iOS side-by-side $ ionic serve --lab Add / remove plugins $ ionic plugin add plugin-name $ ionic plugin rm plugin-name Commands
  • 18. Ionic CLI State Save (package.json) $ ionic state save State Restore $ ionic state restore State Reset $ ionic state reset change browser (Android Crosswalk) $ ionic browser list $ ionic browser add crosswalk Update library $ ionic lib update Package app $ ionic package debug android $ ionic package release android Commands
  • 20. Defined as Sass variables Easily customizable Already used along ionic CSS styles Colors Ionic CSS componentshttp://ionicframework.com/docs/api/
  • 22. <div class="bar bar-header bar-positive"> <button class="button button-icon icon ion-navicon"></button> <h1 class="title">Header</h1> <button class="button button-clear">Edit</button> </div> <div class="bar bar-subheader"> <h2 class="title">Sub Header</h2> </div> <div class="bar bar-footer bar-balanced"> <div class="title">Footer</div> </div> bar-header, bar-subheader, bar-footer Ionic CSS componentshttp://ionicframework.com/docs/api/
  • 23. <button class="button">Default</button> <button class="button button-block button-calm">Block Button</button> <button class="button button-full button-energized">Full Width Block Button</button> <button class="button button-outline button-assertive">Outlined Button</button> <button class="button button-clear button-royal">Clear Button</button> <button class="button icon-left ion-star button-dark">Favs</button> <button class="button icon ion-gear-a button-clear button-dark"></button> buttons Ionic CSS componentshttp://ionicframework.com/docs/api/
  • 24. <div class="list"> <div class="item item-divider">Simple items</div> <div class="item">Item 1</div> <div class="item item-divider">Items with image</div> <div class="item item-avatar"> <img src="ionic.png"> <h2>Ionic Framework</h2> <p>HTML5 hybrid mobile app framework</p> </div> <div class="item item-thumbnail-left"> <img src="ionic.png"> <h2>Ionic Framework</h2> <p>HTML5 hybrid mobile app framework</p> </div> </div> lists Ionic CSS componentshttp://ionicframework.com/docs/api/
  • 25. <!--<div class="tabs-striped tabs-top tabs-background-positive tabs-color-light"> --> <div class="tabs-striped tabs-color-assertive"> <div class="tabs"> <a class="tab-item active" href="#"> <i class="icon ion-home"></i> </a> <a class="tab-item" href="#"> <i class="icon ion-star"></i> </a> <a class="tab-item" href="#"> <i class="icon ion-gear-a"></i> Settings </a> </div> </div> tabs Ionic CSS componentshttp://ionicframework.com/docs/api/
  • 26. and more... Ionic CSS componentshttp://ionicframework.com/docs/api/ Card styles form styles inputs
  • 28. ionic.bundle.js Includes: ● angular.js ● angular-animate.js ● angular-sanitize.js ● angular-ui-router.js ● ionic angularJS elements Ionic Javascript
  • 29. ion-content directive: content area with custom Scroll View Ionic AngularJS elementshttp://ionicframework.com/docs/api/ <ion-content [delegate-handle="str"] [direction="str"] [locking="bool"] [padding="bool"] [scroll="bool"] [overflow-scroll="bool"] [scrollbar-x="bool"] [scrollbar-y="bool"] [start-x="string"] [start-y="string"] [on-scroll="expr"] [on-scroll-complete="expr"] [has-bouncing="bool"] [scroll-event-interval="int"]> ... </ion-content>
  • 30. <ion-content ng-controller=" MyController"> <ion-refresher pulling-text="Pull to refresh..." on-refresh="doRefresh()"> </ion-refresher> <ion-list> <ion-item ng-repeat="item in items"> </ion-item> </ion-list> </ion-content> ion-refresher: adds pull-to-refresh to a scrollView Ionic AngularJS elementshttp://ionicframework.com/docs/api/ angular.module('testApp', ['ionic']) .controller('MyController', function($scope, $http) { $scope.items = [1,2,3]; $scope.doRefresh = function() { $http.get('/new-items') .success(function(newItems) { $scope.items = newItems; }) .finally(function() { // Stop the ion-refresher from spinning $scope.$broadcast('scroll.refreshComplete'); }); }; });
  • 31. $ionicScrollDelegate service ● $getByHandle(handle) ● resize() ● scrollTop([anim]) ● scrollBottom([anim]) ● scrollTo(left, top, [anim]) ● scrollBy(left, top, [anim]) ● zoomTo(level, [anim], [origL], [origT]) ● zoomBy(factor, [anim], [origL], [origT]) ● getScrollPosition() ● anchorScroll([anim]):@id window.location.hash ● freezeScroll([freeze]) / freezeAllScrolls([freeze]) ● getScrollView() ion-scroll Ionic AngularJS elementshttp://ionicframework.com/docs/api/ <ion-scroll [delegate-handle="str"] [direction="str"] [locking="bool"] [paging="bool"] [on-refresh="expr"] [on-scroll="expr"] [scrollbar-x="bool"] [scrollbar-y="bool"] [has-bouncing="bool"] [zooming="bool"] [min-zoom="int"] [max-zoom="int"] > <div>Content to scroll</div> </ion-scroll>
  • 32. <ion-header-bar align-title="left"> <div class="buttons"> <!-- left button --> </div> <h1 class="title">Title!</h1> <div class="buttons"> <!-- right button --> </div> </ion-header-bar> ion-header-bar Ionic AngularJS elementshttp://ionicframework.com/docs/api/ API ● align-title: left/right/center ● no-tap-scroll: by default it scrolls content to the top when clicked
  • 33. <ion-footer-bar align-title="left"> <div class="buttons"> <!-- left button --> </div> <h1 class="title">Title!</h1> <div class="buttons"> <!-- right button --> </div> </ion-footer-bar> ion-footer-bar Ionic AngularJS elementshttp://ionicframework.com/docs/api/ API ● align-title: left/right/center
  • 34. related directives ion-item ion-delete-button ion-reorder-button ion-option-button <ion-list> <ion-item ng-repeat="item in items"> Hello, {{item}}! </ion-item> </ion-list> ion-list Ionic AngularJS elementshttp://ionicframework.com/docs/api/ API ● delegate-handle ● type: list-inset / card ● show-delete ● show-reorder ● can-swipe
  • 35. function MyCtrl($scope, $ionicListDelegate) { $scope.showDeleteBtns = function() { $ionicListDelegate.showDelete(true); }; } <button ng-click="showDeleteBtns()"></button> <ion-list delegate-handle="testList"> <ion-item ng-repeat="i in items"> Item {{i}} <ion-delete-button>Rm</ion-delete-button> </ion-item> </ion-list> $ionicListDelegate Ionic AngularJS elementshttp://ionicframework.com/docs/api/ API ● showReorder(bool) ● showDelete(bool) ● canSwipeItems(bool) ● closeOptionButtons() ● $getByHandle(handle)
  • 36. Basics ● data must be array ● NO one-time binding (::) <ion-content> <ion-item collection-repeat="item in items"> {{item}} </ion-item> </ion-content> collection-repeat Ionic AngularJS elementshttp://ionicframework.com/docs/api/ API ● collection-repeat ● item-width: in px or % ● item-height: in px or % ● item-render-buffer ● force-refresh-images
  • 37. angular.module('LoadingApp', ['ionic']) .controller('MyCtrl', function($scope, $ionicLoading) { $scope.show = function() { $ionicLoading.show({ template: 'Loading...' }); }; $scope.hide = function(){ $ionicLoading.hide(); }; }); $ionicLoading service Ionic AngularJS elementshttp://ionicframework.com/docs/api/ API ● show({opts}) ○ template ○ templateUrl ○ scope ○ noBackdrop ○ hideOnStateChange ○ delay ○ duration ● hide()
  • 38. <ion-side-menus delegate-handle="myMenu"> <!-- Left menu --> <ion-side-menu side="left"> </ion-side-menu> <ion-side-menu-content> <!-- Main content, usually <ion-nav-view> --> </ion-side-menu-content> <!-- Right menu --> <ion-side-menu side="right"> </ion-side-menu> </ion-side-menus> ionSideMenus Ionic AngularJS elementshttp://ionicframework.com/docs/api/ $ionicSideMenuDelegate service ● $getByHandle(handle) ● toogleLeft([open]) ● toogleRight([open]) ● getOpenRatio() ● isOpen() ● isOpenLeft() ● isOpenRight() ● canDragContent([can]) ● edgeDragThreshold(value): #pixels, true(25px), 0
  • 39. <ion-tabs class="tabs-positive tabs-icon-top" delegate-handle="myTabs"> <ion-tab title="Home" icon-on="icon1" icon-off=" icon1-off" badge="5" on-select="sel()" on-deselect=" desel()" hidden="bool" disabled="bool"> <!-- Tab 1 content --> </ion-tab> <ion-tab title="About" icon="icon2"> <!-- Tab 2 content --> </ion-tab> </ion-tabs> ionTabs Ionic AngularJS elementshttp://ionicframework.com/docs/api/ $ionicTabsDelegate service ● $getByHandle(handle) ● select(index) ● selectedIndex() ● showBar(show)
  • 40. ionNavViews Ionic AngularJS elementshttp://ionicframework.com/docs/api/ Usage var app = angular.module('myApp', ['ionic']); app.config(function($stateProvider) { $stateProvider .state('index', { url: '/', template: '<ion-view view-title="My Page"> ...my home content... </ion-view>' }) .state('about', { url: '/about', templateUrl: 'about.html'//this template should use ion-view }); }); <!-- The nav bar that will be updated as we navigate → <ion-nav-bar> <ion-nav-back-button></ion-nav-back-button> </ion-nav-bar> <!-- where the initial view template will be rendered --> <ion-nav-view></ion-nav-view> ion-views are cached by default
  • 41. .controller(function($scope, $ionicActionSheet) { $scope.show = function() { // Show the action sheet var hideSheet = $ionicActionSheet.show({ buttons: [ { text: '<b>Share</b> This' }, ], cancelText: 'Cancel', cancel: function() {}, buttonClicked: function(index) {return true;} }); }; }); $ionicActionSheet Ionic AngularJS elementshttp://ionicframework.com/docs/api/ show(options) ● buttons: [{text:””}] ● titleText: str ● cancelText: str ● destructiveText: str ● cancel: f() ● buttonClicked: f() return true to close ASheet ● destructiveButtonClicked: f() true to close ● cancelOnStateChange: f() cancel when navigate ● cssClass: str custom CSS class name
  • 42. <ion-slides options="options" slider="data.slider"> <ion-slide-page> <div class="box blue"><h1>BLUE</h1></div> </ion-slide-page> <ion-slide-page> <div class="box yellow"><h1>YELLOW</h1></div> </ion-slide-page> </ion-slides> ion-slides (Swiper) Ionic AngularJS elementshttp://ionicframework.com/docs/api/ How to use it $scope.options = { loop: false, effect: fade, speed: 500, } $scope.data = {}; $scope.$watch('data.slider', function(nv, ov) { $scope.slider = $scope.data.slider; })
  • 44. What is this doing 1. Install Gulp and gulp-sass 2. remove old CSS files from index.html 3. add Sass generated CSS files to index.html 4. add Sass to gulp startup tasks, so ionic serve command watch for Sass changes. $ ionic setup sass setup Sass Sass integration ./scss/ionic.app.scss where do you write your Sass