SlideShare uma empresa Scribd logo
1 de 45
Baixar para ler offline
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

Mais conteúdo relacionado

Mais procurados

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 ReactJSVisual Engineering
 
Workshop 14: AngularJS Parte III
Workshop 14: AngularJS Parte IIIWorkshop 14: AngularJS Parte III
Workshop 14: AngularJS Parte IIIVisual Engineering
 
Angular js 2
Angular js 2Angular js 2
Angular js 2Ran Wahle
 
Building scalable applications with angular js
Building scalable applications with angular jsBuilding scalable applications with angular js
Building scalable applications with angular jsAndrew Alpert
 
Improving app performance with Kotlin Coroutines
Improving app performance with Kotlin CoroutinesImproving app performance with Kotlin Coroutines
Improving app performance with Kotlin CoroutinesHassan Abid
 
Angular2 Development for Java developers
Angular2 Development for Java developersAngular2 Development for Java developers
Angular2 Development for Java developersYakov Fain
 
Angular 2.0 Routing and Navigation
Angular 2.0 Routing and NavigationAngular 2.0 Routing and Navigation
Angular 2.0 Routing and NavigationEyal Vardi
 
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 WebSocketsYakov 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.0Takuya 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 2Filippo Matteo Riggio
 
AngularJS - Services
AngularJS - ServicesAngularJS - Services
AngularJS - ServicesNir 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 ExtendedToru Wonyoung Choi
 
What’s new in Android JetPack
What’s new in Android JetPackWhat’s new in Android JetPack
What’s new in Android JetPackHassan Abid
 
Exploring Angular 2 - Episode 2
Exploring Angular 2 - Episode 2Exploring Angular 2 - Episode 2
Exploring Angular 2 - Episode 2Ahmed Moawad
 

Mais procurados (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
 

Destaque

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 5: JavaScript testing
Workshop 5: JavaScript testingWorkshop 5: JavaScript testing
Workshop 5: JavaScript testingVisual Engineering
 
Workshop 8: Templating: Handlebars, DustJS
Workshop 8: Templating: Handlebars, DustJSWorkshop 8: Templating: Handlebars, DustJS
Workshop 8: Templating: Handlebars, DustJSVisual Engineering
 
Workshop 9: BackboneJS y patrones MVC
Workshop 9: BackboneJS y patrones MVCWorkshop 9: BackboneJS y patrones MVC
Workshop 9: BackboneJS y patrones MVCVisual Engineering
 
Workshop 7: Single Page Applications
Workshop 7: Single Page ApplicationsWorkshop 7: Single Page Applications
Workshop 7: Single Page ApplicationsVisual 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 Gamesuxbri
 
Designing the future of Augmented Reality
Designing the future of Augmented RealityDesigning the future of Augmented Reality
Designing the future of Augmented RealityCarina Ngai
 
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
 
TalkUX - UX in VR - UNIT9
TalkUX - UX in VR - UNIT9TalkUX - UX in VR - UNIT9
TalkUX - UX in VR - UNIT9Laura 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
 

Destaque (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?
 

Semelhante a Workshop 15: 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 FrameworkTroy Miles
 
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 2015Loïc Knuchel
 
Angularjs Tutorial for Beginners
Angularjs Tutorial for BeginnersAngularjs Tutorial for Beginners
Angularjs Tutorial for Beginnersrajkamaltibacademy
 
[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 CordovaHazem Saleh
 
Ionic CLI Adventures
Ionic CLI AdventuresIonic CLI Adventures
Ionic CLI AdventuresJuarez Filho
 
Apache Cordova In Action
Apache Cordova In ActionApache Cordova In Action
Apache Cordova In ActionHazem Saleh
 
Building Mobile Applications with Ionic
Building Mobile Applications with IonicBuilding Mobile Applications with Ionic
Building Mobile Applications with IonicMorris 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 2014Hazem 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 iosgautham_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 AngularJSPhilipp 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 FrameworkTroy 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 appsAndreas 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 CordovaHazem Saleh
 

Semelhante a 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
 

Mais de Visual Engineering

Workshop iOS 4: Closures, generics & operators
Workshop iOS 4: Closures, generics & operatorsWorkshop iOS 4: Closures, generics & operators
Workshop iOS 4: Closures, generics & operatorsVisual 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 extensionesVisual Engineering
 
Workshop iOS 2: Swift - Structures
Workshop iOS 2: Swift - StructuresWorkshop iOS 2: Swift - Structures
Workshop iOS 2: Swift - StructuresVisual Engineering
 
Workhop iOS 1: Fundamentos de Swift
Workhop iOS 1: Fundamentos de SwiftWorkhop iOS 1: Fundamentos de Swift
Workhop iOS 1: Fundamentos de SwiftVisual 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 SideVisual Engineering
 
Workshop 23: ReactJS, React & Redux testing
Workshop 23: ReactJS, React & Redux testingWorkshop 23: ReactJS, React & Redux testing
Workshop 23: ReactJS, React & Redux testingVisual Engineering
 
Workshop 22: ReactJS Redux Advanced
Workshop 22: ReactJS Redux AdvancedWorkshop 22: ReactJS Redux Advanced
Workshop 22: ReactJS Redux AdvancedVisual Engineering
 
Workshop 22: React-Redux Middleware
Workshop 22: React-Redux MiddlewareWorkshop 22: React-Redux Middleware
Workshop 22: React-Redux MiddlewareVisual 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 & ReduxVisual Engineering
 
Workshop 19: ReactJS Introduction
Workshop 19: ReactJS IntroductionWorkshop 19: ReactJS Introduction
Workshop 19: ReactJS IntroductionVisual Engineering
 
Workshop 18: CSS Animations & cool effects
Workshop 18: CSS Animations & cool effectsWorkshop 18: CSS Animations & cool effects
Workshop 18: CSS Animations & cool effectsVisual Engineering
 
Workshop 11: Trendy web designs & prototyping
Workshop 11: Trendy web designs & prototypingWorkshop 11: Trendy web designs & prototyping
Workshop 11: Trendy web designs & prototypingVisual 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 toolsVisual Engineering
 
Workshop 2: JavaScript Design Patterns
Workshop 2: JavaScript Design PatternsWorkshop 2: JavaScript Design Patterns
Workshop 2: JavaScript Design PatternsVisual Engineering
 

Mais de 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
 

Último

Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️anilsa9823
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 

Último (20)

Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 

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