Introduction à Ionic Framework et son écosystème :
* Choisir la technologie de son application mobile : hybride vs natif
* Présentation de Cordova, AngularJS et Ionic Framework
* Exemples de composants Ionic avec le code associé
* Comment démarrer son application Ionic
* L'écosystème Ionic : Ionic CLI, ngCordova, Ionic Lab, Ionic Creator, Ionic View & Ionic Backend...
* Points d'attentions pour avoir une application qui fonctionne bien : cycle de vie des vues et contrôleurs, mocker ses plugin cordova, ne pas faire de traitement lourd, bien gérer le cache (localStorage)
* Liens utiles :
- http://codepen.io/ionic/public-list/ : exemples de composants
- https://github.com/loicknuchel/ionic-starter
5. Pour quoi faire ?
Avec quelles contraintes ?
Et quel contexte ?
Gagner un hackthon
Un outil interneTester une idée
Avoir une application hype
Développement rapide
Pas cher
Mutli-plateforme dès le début
Application stratégique
Equipe en place
Startup
13. Cordova
“Apache Cordova is a platform for building
native mobile applications using HTML, CSS
and JavaScript”
● 2009: Nitobi crée PhoneGap
● 2011: Adobe rachète PhoneGap
● 2012: PhoneGap est cédé à Apache sous le nom de Cordova
15. Ionic
Ensemble de composants permettant de créer facilement
une application mobile hybride.
● Composants UI optimisés pour le mobile
● Animations
● Gestures
Créé par
28. Lancer l’application
● Dans le navigateur
● Sur son téléphone (usb) ou sur l’émulateur
$ ionic serve --lab
$ ionic platform add [android/ios]
$ ionic [run/emulate] [android/ios]
40. Tip #1: /! Cache Ionic des vues
Attention au cycle de vie des vues & controllers
.controller('MyCtrl', function($scope){
'use strict';
// first initialization
$scope.$on('$ionicView.enter', function(){
// on view enter (active)
});
$scope.$on('$ionicView.leave', function(){
// on view leave (cached or destroyed)
});
})
http://ionicframework.com/docs/api/directive/ionView/
41. Tip #2 : Mock des plugins
ngCordovaMocks : mocks pour ngCordova
cordova.js : simuler les fonctions natives
42. Tip #3 : JavaScript = Monothread
.controller('MyCtrl', function($scope){
'use strict';
// heavy work...
// app & animations will freeze :(
for(var i=0; i<1000; i++){
console.log(i);
}
})
44. Tip #3 : JavaScript = Monothread
.controller('MyCtrl', function($scope){
'use strict';
// best... but MUST avoid heady work !
$scope.$on('$ionicView.afterEnter', function(){
for(var i=0; i<1000; i++){
window.requestAnimationFrame(console.log(i));
}
});
})
45. Tip #4 : Bien gérer le LocalStorage
● /! sérialisation : opération lourde si objet volumineux
(cache par ex !)
● Éviter ngStorage pour le mobile (sérialisations
“intempestives”)
● Utiliser angular-localForage
● Ajouter un cache en mémoire : storage-utils.js
46. Tip #5 : $digest & DOM
● Utiliser au maximum le “one-time-binding”
de AngularJS (ex: {{::user.name}})
● Utiliser le collection-repeat de Ionic pour les
longues listes
47. Liens
http://ionicframework.com/docs/components/ : Composants standards Ionic
http://learn.ionicframework.com/ : Tutoriels Ionic
http://codepen.io/ionic/public-list/ : Examples de composants Ionic
http://ngcordova.com/ : Wrappers AngularJS pour les plugins Cordova
http://mcgivery.com/ : Blog fourni en articles sur Ionic
https://github.com/loicknuchel/ionic-starter : Démarrer rapidement un projet Ionic